diff options
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.js | 17 |
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); |