mirror of https://github.com/tc39/test262.git
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
// Copyright (C) 2019 Leo Balter. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
description: >
|
|
Resolved promises ignore rejections 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 »).
|
|
flags: [async]
|
|
features: [Promise.allSettled]
|
|
---*/
|
|
|
|
var simulation = {};
|
|
|
|
var fulfiller = {
|
|
then(resolve) {
|
|
new Promise(function(resolve) {
|
|
resolve();
|
|
})
|
|
.then(function() {
|
|
resolve(42);
|
|
});
|
|
}
|
|
};
|
|
var rejector = {
|
|
then(resolve, reject) {
|
|
new Promise(function(resolve) {
|
|
resolve();
|
|
})
|
|
.then(function() {
|
|
resolve(simulation);
|
|
reject();
|
|
});
|
|
}
|
|
};
|
|
|
|
Promise.allSettled([fulfiller, rejector])
|
|
.then((settleds) => {
|
|
assert.sameValue(settleds.length, 2);
|
|
assert.sameValue(settleds[0].status, 'fulfilled');
|
|
assert.sameValue(settleds[0].value, 42);
|
|
assert.sameValue(settleds[1].status, 'fulfilled');
|
|
assert.sameValue(settleds[1].value, simulation);
|
|
$DONE();
|
|
}).then($DONE, $DONE);
|