39 lines
934 B
JavaScript
39 lines
934 B
JavaScript
function shouldBe(actual, expected) {
|
|
if (actual !== expected)
|
|
throw new Error('bad value: ' + actual);
|
|
}
|
|
|
|
var set = new Set;
|
|
var count = 0;
|
|
setUnhandledRejectionCallback(function (promise) {
|
|
shouldBe(set.has(promise), true);
|
|
++count;
|
|
});
|
|
var promise1 = Promise.reject(42);
|
|
set.add(promise1);
|
|
var promise2 = new Promise(function () { });
|
|
$vm.rejectPromiseAsHandled(promise2, 42);
|
|
|
|
// If it is already rejected, rejectPromiseAsHandled is no-op: not marking the promise as handled.
|
|
var promise3 = Promise.reject(43);
|
|
set.add(promise3);
|
|
$vm.rejectPromiseAsHandled(promise3, 43);
|
|
|
|
drainMicrotasks();
|
|
shouldBe(count, 2);
|
|
|
|
promise1.then($vm.abort, function (value) {
|
|
shouldBe(value, 42);
|
|
++count;
|
|
});
|
|
promise2.then($vm.abort, function (value) {
|
|
shouldBe(value, 42);
|
|
++count;
|
|
});
|
|
promise3.then($vm.abort, function (value) {
|
|
shouldBe(value, 43);
|
|
++count;
|
|
});
|
|
drainMicrotasks();
|
|
shouldBe(count, 5);
|