resolve-non-thenable-immed.js (1256B)
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 non-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 a. Return FulfillPromise(promise, resolution). 22 flags: [async] 23 ---*/ 24 25 var returnValue = null; 26 var nonThenable = { 27 then: null 28 }; 29 var promise = new Promise(function(resolve) { 30 returnValue = resolve(nonThenable); 31 }); 32 33 assert.sameValue(returnValue, undefined, '"resolve" return value'); 34 35 promise.then(function(value) { 36 if (value !== nonThenable) { 37 $DONE('The promise should be fulfilled with the provided value.'); 38 return; 39 } 40 41 $DONE(); 42 }, function() { 43 $DONE('The promise should not be rejected.'); 44 });