resolve-thenable-immed.js (1362B)
1 // |reftest| async 2 // Copyright (C) 2016 the V8 project authors. All rights reserved. 3 // This code is governed by the BSD license found in the LICENSE file. 4 /*--- 5 description: > 6 Resolving with a thenable object value from within the executor function 7 es6id: 25.4.3.1 8 info: | 9 [...] 10 8. Let resolvingFunctions be CreateResolvingFunctions(promise). 11 9. Let completion be Call(executor, undefined, 12 «resolvingFunctions.[[Resolve]], resolvingFunctions.[[Reject]]»). 13 14 25.4.1.3.2 Promise Resolve Functions 15 [...] 16 8. Let then be Get(resolution, "then"). 17 9. If then is an abrupt completion, then 18 [...] 19 10. Let thenAction be then.[[value]]. 20 11. If IsCallable(thenAction) is false, then 21 [...] 22 12. Perform EnqueueJob ("PromiseJobs", PromiseResolveThenableJob, 23 «promise, resolution, thenAction») 24 flags: [async] 25 ---*/ 26 27 var returnValue = null; 28 var value = {}; 29 var thenable = new Promise(function(resolve) { 30 resolve(value); 31 }); 32 var promise = new Promise(function(resolve) { 33 returnValue = resolve(thenable); 34 }); 35 36 assert.sameValue(returnValue, undefined, '"resolve" return value'); 37 38 promise.then(function(val) { 39 if (val !== value) { 40 $DONE('The promise should be fulfilled with the provided value.'); 41 return; 42 } 43 44 $DONE(); 45 }, function() { 46 $DONE('The promise should not be rejected.'); 47 });