Index: src/js/promise.js |
diff --git a/src/js/promise.js b/src/js/promise.js |
index 86be06018ce7230dd54a9d7179db9dbd5fa365fa..f92102a46d228aa35a6e355f692d5f81cbdc53fc 100644 |
--- a/src/js/promise.js |
+++ b/src/js/promise.js |
@@ -24,8 +24,8 @@ var promiseRejectReactionsSymbol = |
utils.ImportNow("promise_reject_reactions_symbol"); |
var promiseFulfillReactionsSymbol = |
utils.ImportNow("promise_fulfill_reactions_symbol"); |
-var promiseDeferredReactionsSymbol = |
- utils.ImportNow("promise_deferred_reactions_symbol"); |
+var promiseDeferredReactionSymbol = |
+ utils.ImportNow("promise_deferred_reaction_symbol"); |
var promiseHandledHintSymbol = |
utils.ImportNow("promise_handled_hint_symbol"); |
var promiseRawSymbol = utils.ImportNow("promise_raw_symbol"); |
@@ -128,16 +128,11 @@ function PromiseSet(promise, status, value) { |
SET_PRIVATE(promise, promiseFulfillReactionsSymbol, UNDEFINED); |
SET_PRIVATE(promise, promiseRejectReactionsSymbol, UNDEFINED); |
- // There are 2 possible states for this symbol -- |
- // 1) UNDEFINED -- This is the zero state, no deferred object is |
- // attached to this symbol. When we want to add a new deferred we |
- // directly attach it to this symbol. |
- // 2) symbol with attached deferred object -- New deferred objects |
- // are not attached to this symbol, but instead they are directly |
- // attached to the resolve, reject callback arrays. At this point, |
- // the deferred symbol's state is stale, and the deferreds should be |
- // read from the reject, resolve callbacks. |
- SET_PRIVATE(promise, promiseDeferredReactionsSymbol, UNDEFINED); |
+ // This symbol is used only when one deferred needs to be attached. When more |
+ // than one deferred need to be attached the promise, we attach them directly |
+ // to the promiseFulfillReactionsSymbol and promiseRejectReactionsSymbol and |
+ // reset this back to UNDEFINED. |
+ SET_PRIVATE(promise, promiseDeferredReactionSymbol, UNDEFINED); |
return promise; |
} |
@@ -157,8 +152,8 @@ function FulfillPromise(promise, status, value, promiseQueue) { |
if (GET_PRIVATE(promise, promiseStateSymbol) === kPending) { |
var tasks = GET_PRIVATE(promise, promiseQueue); |
if (!IS_UNDEFINED(tasks)) { |
- var deferreds = GET_PRIVATE(promise, promiseDeferredReactionsSymbol); |
- PromiseEnqueue(value, tasks, deferreds, status); |
+ var deferred = GET_PRIVATE(promise, promiseDeferredReactionSymbol); |
+ PromiseEnqueue(value, tasks, deferred, status); |
} |
PromiseSet(promise, status, value); |
} |
@@ -234,11 +229,11 @@ function PromiseAttachCallbacks(promise, deferred, onResolve, onReject) { |
if (IS_UNDEFINED(maybeResolveCallbacks)) { |
SET_PRIVATE(promise, promiseFulfillReactionsSymbol, onResolve); |
SET_PRIVATE(promise, promiseRejectReactionsSymbol, onReject); |
- SET_PRIVATE(promise, promiseDeferredReactionsSymbol, deferred); |
+ SET_PRIVATE(promise, promiseDeferredReactionSymbol, deferred); |
} else if (!IS_ARRAY(maybeResolveCallbacks)) { |
var resolveCallbacks = new InternalArray(); |
var rejectCallbacks = new InternalArray(); |
- var existingDeferred = GET_PRIVATE(promise, promiseDeferredReactionsSymbol); |
+ var existingDeferred = GET_PRIVATE(promise, promiseDeferredReactionSymbol); |
resolveCallbacks.push( |
maybeResolveCallbacks, existingDeferred, onResolve, deferred); |
@@ -249,7 +244,7 @@ function PromiseAttachCallbacks(promise, deferred, onResolve, onReject) { |
SET_PRIVATE(promise, promiseFulfillReactionsSymbol, resolveCallbacks); |
SET_PRIVATE(promise, promiseRejectReactionsSymbol, rejectCallbacks); |
- SET_PRIVATE(promise, promiseDeferredReactionsSymbol, UNDEFINED); |
+ SET_PRIVATE(promise, promiseDeferredReactionSymbol, UNDEFINED); |
} else { |
maybeResolveCallbacks.push(onResolve, deferred); |
GET_PRIVATE(promise, promiseRejectReactionsSymbol).push(onReject, deferred); |
@@ -646,12 +641,12 @@ function PromiseHasUserDefinedRejectHandlerRecursive(promise) { |
} |
var queue = GET_PRIVATE(promise, promiseRejectReactionsSymbol); |
- var deferreds = GET_PRIVATE(promise, promiseDeferredReactionsSymbol); |
+ var deferred = GET_PRIVATE(promise, promiseDeferredReactionSymbol); |
if (IS_UNDEFINED(queue)) return false; |
if (!IS_ARRAY(queue)) { |
- return PromiseHasUserDefinedRejectHandlerCheck(queue, deferreds); |
+ return PromiseHasUserDefinedRejectHandlerCheck(queue, deferred); |
} |
for (var i = 0; i < queue.length; i += 2) { |