diff --git a/lib/modules/database/Reference.js b/lib/modules/database/Reference.js index ce54e645..72171865 100644 --- a/lib/modules/database/Reference.js +++ b/lib/modules/database/Reference.js @@ -299,15 +299,15 @@ export default class Reference extends ReferenceBase { * @param onComplete * @returns {*} */ - push(value: any, onComplete?: Function): Reference | Promise { + push(value: any, onComplete?: Function): ThenableReference { if (value === null || value === undefined) { - return new Reference( + return new ThenableReference( this._database, `${this.path}/${generatePushID(this._database._serverTimeOffset)}` ); } - const newRef = new Reference( + const newRef = new ThenableReference( this._database, `${this.path}/${generatePushID(this._database._serverTimeOffset)}` ); @@ -892,3 +892,12 @@ export default class Reference extends ReferenceBase { return SyncTree.removeListenersForRegistrations(registrations); } } + +// eslint-disable-next-line no-unused-vars +declare class ThenableReference<+R> extends Reference { + then( + onFulfill?: (value: R) => Promise | U, + onReject?: (error: any) => Promise | U + ): Promise; + catch(onReject?: (error: any) => Promise | U): Promise; +}