mirror of https://github.com/tc39/test262.git
47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
// Copyright (C) 2019 Leo Balter. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
/*---
|
|
description: Rejecting through deferred invocation of the provided resolving function
|
|
esid: sec-promise.allsettled
|
|
info: |
|
|
6. Let result be PerformPromiseAllSettled(iteratorRecord, C, promiseCapability).
|
|
|
|
Runtime Semantics: PerformPromiseAllSettled
|
|
|
|
6. Repeat
|
|
...
|
|
z. Perform ? Invoke(nextPromise, "then", « resolveElement, rejectElement »).
|
|
|
|
Promise.allSettled Reject Element Functions
|
|
|
|
9. Let obj be ! ObjectCreate(%ObjectPrototype%).
|
|
10. Perform ! CreateDataProperty(obj, "status", "rejected").
|
|
11. Perform ! CreateDataProperty(obj, "reason", x).
|
|
12. Set values[index] to be obj.
|
|
13. Set remainingElementsCount.[[Value]] to remainingElementsCount.[[Value]] - 1.
|
|
14. If remainingElementsCount.[[Value]] is 0, then
|
|
a. Let valuesArray be CreateArrayFromList(values).
|
|
b. Return ? Call(promiseCapability.[[Resolve]], undefined, « valuesArray »).
|
|
flags: [async]
|
|
features: [Promise.allSettled]
|
|
---*/
|
|
|
|
var simulation = {};
|
|
var thenable = {
|
|
then(_, reject) {
|
|
new Promise(function(resolve) {
|
|
resolve();
|
|
})
|
|
.then(function() {
|
|
reject(simulation);
|
|
});
|
|
}
|
|
};
|
|
|
|
Promise.allSettled([thenable])
|
|
.then((settleds) => {
|
|
assert.sameValue(settleds.length, 1);
|
|
assert.sameValue(settleds[0].status, 'rejected');
|
|
assert.sameValue(settleds[0].reason, simulation);
|
|
}).then($DONE, $DONE);
|