From 0c550f3586293af2ffcab46ad61fd8a6e9dbed7f Mon Sep 17 00:00:00 2001 From: Elton Gao Date: Thu, 9 Nov 2017 10:34:52 -0500 Subject: [PATCH] Make sure the promise is resolved/rejected for transaction Right now the following code will be broken: ``` async function() { await ref.transaction( function(foo) { // deal with foo }, function(error, committed, ss) { // additional work on complete callback }, true ); // NOTE: Code from here will never execute because promise above never gets resolved } ``` v2 is not returning at the point of calling onComplete, v3 code does --- lib/modules/database/reference.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/modules/database/reference.js b/lib/modules/database/reference.js index ffb1af9f..83f535ac 100644 --- a/lib/modules/database/reference.js +++ b/lib/modules/database/reference.js @@ -195,8 +195,11 @@ export default class Reference extends ReferenceBase { return new Promise((resolve, reject) => { const onCompleteWrapper = (error, committed, snapshotData) => { if (isFunction(onComplete)) { - if (error) return onComplete(error, committed, null); - return onComplete(null, committed, new Snapshot(this, snapshotData)); + if (error) { + onComplete(error, committed, null); + } else { + onComplete(null, committed, new Snapshot(this, snapshotData)); + } } if (error) return reject(error);