Index: src/js/promise.js |
diff --git a/src/js/promise.js b/src/js/promise.js |
index bcf826a10151d48a498d40e72f418805a5022f18..719ecdc48fab72a03ed2d79293eb11a6917d64c1 100644 |
--- a/src/js/promise.js |
+++ b/src/js/promise.js |
@@ -268,6 +268,19 @@ function PromiseRejected(r) { |
} |
} |
+// Shortcut Promise.reject and Promise.resolve() implementations, used by |
+// Async Functions implementation. |
+function PromiseCreateRejected(r) { |
+ var promise = PromiseCreateAndSet(-1, r); |
+ %PromiseRejectEvent(promise, r, false); |
+ return promise; |
+} |
+ |
+function PromiseCreateResolved(x) { |
+ if (IsPromise(x) && x.constructor === GlobalPromise) return x; |
+ return PromiseCreateAndSet(+1, x); |
+} |
+ |
// Multi-unwrapped chaining with thenable coercion. |
function PromiseThen(onResolve, onReject) { |
@@ -451,6 +464,7 @@ utils.InstallFunctions(GlobalPromise.prototype, DONT_ENUM, [ |
"promise_reject", PromiseReject, |
"promise_resolve", PromiseResolve, |
"promise_then", PromiseThen, |
+ "promise_create_rejected", PromiseCreateRejected |
]); |
// This allows extras to create promises quickly without building extra |
@@ -470,6 +484,10 @@ utils.Export(function(to) { |
to.PromiseChain = PromiseChain; |
to.PromiseDeferred = PromiseDeferred; |
to.PromiseResolved = PromiseResolved; |
+ |
+ to.PromiseCreateRejected = PromiseCreateRejected; |
+ to.PromiseCreateResolved = PromiseCreateResolved; |
+ to.PromiseThen = PromiseThen; |
}); |
}) |