| Index: src/promise.js | 
| diff --git a/src/promise.js b/src/promise.js | 
| index 2d8314a42fa5d8d5b0ec05638efec2d9a5ccbf03..bbc832d0f446cc62372e1ba3b883b3786bb70058 100644 | 
| --- a/src/promise.js | 
| +++ b/src/promise.js | 
| @@ -324,12 +324,23 @@ var lastMicrotaskId = 0; | 
|  | 
|  | 
| // Utility for debugger | 
| + | 
| +  function PromiseHasRejectHandlerRecursive(promise) { | 
| +    var queue = GET_PRIVATE(promise, promiseOnReject); | 
| +    if (IS_UNDEFINED(queue)) return false; | 
| +    // Do a depth first search for a reject handler that's not | 
| +    // the default PromiseIdRejectHandler. | 
| +    for (var i = 0; i < queue.length; i += 2) { | 
| +      if (queue[i] != PromiseIdRejectHandler) return true; | 
| +      if (PromiseHasRejectHandlerRecursive(queue[i + 1])) return true; | 
| +    } | 
| +    return false; | 
| +  } | 
|  | 
| PromiseHasRejectHandler = function PromiseHasRejectHandler() { | 
| // Mark promise as already having triggered a reject event. | 
| SET_PRIVATE(this, promiseDebug, true); | 
| -    var queue = GET_PRIVATE(this, promiseOnReject); | 
| -    return !IS_UNDEFINED(queue) && queue.length > 0; | 
| +    return PromiseHasRejectHandlerRecursive(this); | 
| }; | 
|  | 
| // ------------------------------------------------------------------- | 
|  |