| Index: src/js/promise.js | 
| diff --git a/src/js/promise.js b/src/js/promise.js | 
| index e020028c244f8f0d45bf429316ae916757012de5..2daaf16975d8cd9363c8d47f49f22fd7933b8966 100644 | 
| --- a/src/js/promise.js | 
| +++ b/src/js/promise.js | 
| @@ -283,30 +283,29 @@ function ResolvePromise(promise, resolution) { | 
| } | 
|  | 
| if (IS_CALLABLE(then)) { | 
| -      // PromiseResolveThenableJob | 
| -      var id; | 
| -      var name = "PromiseResolveThenableJob"; | 
| -      var instrumenting = DEBUG_IS_ACTIVE; | 
| -      %EnqueueMicrotask(function() { | 
| -        if (instrumenting) { | 
| -          %DebugAsyncTaskEvent({ type: "willHandle", id: id, name: name }); | 
| -        } | 
| -        // These resolving functions simply forward the exception, so | 
| -        // don't create a new debugEvent. | 
| -        var callbacks = CreateResolvingFunctions(promise, false); | 
| -        try { | 
| -          %_Call(then, resolution, callbacks.resolve, callbacks.reject); | 
| -        } catch (e) { | 
| -          %_Call(callbacks.reject, UNDEFINED, e); | 
| -        } | 
| -        if (instrumenting) { | 
| -          %DebugAsyncTaskEvent({ type: "didHandle", id: id, name: name }); | 
| -        } | 
| -      }); | 
| -      if (instrumenting) { | 
| +      var callbacks = CreateResolvingFunctions(promise, false); | 
| +      var id, before_debug_event, after_debug_event; | 
| +      if (DEBUG_IS_ACTIVE) { | 
| id = ++lastMicrotaskId; | 
| -        %DebugAsyncTaskEvent({ type: "enqueue", id: id, name: name }); | 
| +        before_debug_event = { | 
| +          type: "willHandle", | 
| +          id: id, | 
| +          name: "PromiseResolveThenableJob" | 
| +        }; | 
| +        after_debug_event = { | 
| +          type: "didHandle", | 
| +          id: id, | 
| +          name: "PromiseResolveThenableJob" | 
| +        }; | 
| +        %DebugAsyncTaskEvent({ | 
| +          type: "enqueue", | 
| +          id: id, | 
| +          name: "PromiseResolveThenableJob" | 
| +        }); | 
| } | 
| +      %EnqueuePromiseResolveThenableJob( | 
| +          resolution, then, callbacks.resolve, callbacks.reject, | 
| +          before_debug_event, after_debug_event); | 
| return; | 
| } | 
| } | 
| @@ -613,7 +612,7 @@ utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [ | 
| "promise_has_user_defined_reject_handler", PromiseHasUserDefinedRejectHandler, | 
| "promise_reject", DoRejectPromise, | 
| "promise_resolve", ResolvePromise, | 
| -  "promise_then", PromiseThen, | 
| +  "promise_then", PromiseThen | 
| ]); | 
|  | 
| // This allows extras to create promises quickly without building extra | 
|  |