Index: src/js/promise.js |
diff --git a/src/js/promise.js b/src/js/promise.js |
index c057238af696d78416a6198b3c0f68dabb8c31c1..14af0f5196e015b8dacd983f26c4a188cf874f23 100644 |
--- a/src/js/promise.js |
+++ b/src/js/promise.js |
@@ -279,30 +279,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( |
+ promise, resolution, then, callbacks.resolve, |
+ callbacks.reject, before_debug_event, after_debug_event); |
return; |
} |
} |
@@ -610,7 +609,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 |