1function shouldBe(actual, expected) {
2 if (actual !== expected)
3 throw new Error('bad value: ' + actual);
4}
5
6class Thenable {
7 constructor(promise)
8 {
9 this.promise = promise;
10 }
11
12 then(fulfill, rejected)
13 {
14 return new Thenable(this.promise.then(fulfill, rejected));
15 }
16};
17
18var fulfilled = new Thenable(Promise.reject(0));
19var rejected = new Thenable(Promise.resolve(42));
20
21var counter = 0;
22Promise.prototype.finally.call(fulfilled, function () { counter++; });
23Promise.prototype.finally.call(rejected, function () { counter++; });
24drainMicrotasks();
25shouldBe(counter, 2);