reject-ignored-deferred.js (1321B)
1 // |reftest| async 2 // Copyright (C) 2019 Leo Balter. All rights reserved. 3 // This code is governed by the BSD license found in the LICENSE file. 4 5 /*--- 6 description: > 7 Resolved promises ignore rejections through deferred invocation of the 8 provided resolving function 9 esid: sec-promise.allsettled 10 info: | 11 6. Let result be PerformPromiseAllSettled(iteratorRecord, C, promiseCapability). 12 13 Runtime Semantics: PerformPromiseAllSettled 14 15 6. Repeat 16 ... 17 z. Perform ? Invoke(nextPromise, "then", « resolveElement, rejectElement »). 18 flags: [async] 19 features: [Promise.allSettled] 20 ---*/ 21 22 var simulation = {}; 23 24 var fulfiller = { 25 then(resolve) { 26 new Promise(function(resolve) { 27 resolve(); 28 }) 29 .then(function() { 30 resolve(42); 31 }); 32 } 33 }; 34 var rejector = { 35 then(resolve, reject) { 36 new Promise(function(resolve) { 37 resolve(); 38 }) 39 .then(function() { 40 resolve(simulation); 41 reject(); 42 }); 43 } 44 }; 45 46 Promise.allSettled([fulfiller, rejector]) 47 .then((settleds) => { 48 assert.sameValue(settleds.length, 2); 49 assert.sameValue(settleds[0].status, 'fulfilled'); 50 assert.sameValue(settleds[0].value, 42); 51 assert.sameValue(settleds[1].status, 'fulfilled'); 52 assert.sameValue(settleds[1].value, simulation); 53 }).then($DONE, $DONE);