Index: src/js/promise.js |
diff --git a/src/js/promise.js b/src/js/promise.js |
index 20ffc8c4892327ac68f5242c7900a1006303959e..54058b792bd7ad41b94e271df9b6b37a5599bb40 100644 |
--- a/src/js/promise.js |
+++ b/src/js/promise.js |
@@ -386,8 +386,14 @@ function PromiseCreateRejected(r) { |
return %_Call(PromiseReject, GlobalPromise, r); |
} |
-function PromiseCreateResolved(x) { |
- return %_Call(PromiseResolve, GlobalPromise, x); |
+function PromiseCreateResolved(value) { |
+ if (IsPromise(value)) { |
+ return value; |
caitp
2016/08/05 00:43:43
looks great. Should we do something similar for Pr
Dan Ehrenberg
2016/08/05 01:22:36
I don't think we need to optimize for the reject c
|
+ } else { |
+ var promise = PromiseInit(new GlobalPromise(promiseRawSymbol)); |
+ var resolveResult = ResolvePromise(promise, value); |
+ return promise; |
+ } |
} |
function PerformPromiseThen(promise, onResolve, onReject, resultCapability) { |
@@ -629,8 +635,6 @@ utils.InstallFunctions(extrasUtils, 0, [ |
fn => %FunctionRemovePrototype(fn)); |
utils.Export(function(to) { |
- to.IsPromise = IsPromise; |
- |
to.PromiseChain = PromiseChain; |
to.PromiseDefer = PromiseDefer; |
to.PromiseAccept = PromiseAccept; |