summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/es6-promise/lib/es6-promise/enumerator.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/es6-promise/lib/es6-promise/enumerator.js')
-rw-r--r--deps/npm/node_modules/es6-promise/lib/es6-promise/enumerator.js17
1 files changed, 14 insertions, 3 deletions
diff --git a/deps/npm/node_modules/es6-promise/lib/es6-promise/enumerator.js b/deps/npm/node_modules/es6-promise/lib/es6-promise/enumerator.js
index b0eaa9300e..be2e0938a9 100644
--- a/deps/npm/node_modules/es6-promise/lib/es6-promise/enumerator.js
+++ b/deps/npm/node_modules/es6-promise/lib/es6-promise/enumerator.js
@@ -10,7 +10,6 @@ import {
FULFILLED,
REJECTED,
PENDING,
- getThen,
handleMaybeThenable
} from './-internal';
@@ -63,7 +62,15 @@ export default class Enumerator {
let { resolve } = c;
if (resolve === originalResolve) {
- let then = getThen(entry);
+ let then;
+ let error;
+ let didError = false;
+ try {
+ then = entry.then;
+ } catch (e) {
+ didError = true;
+ error = e;
+ }
if (then === originalThen &&
entry._state !== PENDING) {
@@ -73,7 +80,11 @@ export default class Enumerator {
this._result[i] = entry;
} else if (c === Promise) {
let promise = new c(noop);
- handleMaybeThenable(promise, entry, then);
+ if (didError) {
+ reject(promise, error);
+ } else {
+ handleMaybeThenable(promise, entry, then);
+ }
this._willSettleAt(promise, i);
} else {
this._willSettleAt(new c(resolve => resolve(entry)), i);