blob: 0525ff91ee23b5c6c4e7cc2507a62c0a107a0bfc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
// |jit-test| skip-if: !this.hasOwnProperty("ReadableStream")
// Releasing a reader should not result in a promise being tracked as
// unhandled.
function test(readable) {
// Create an errored stream.
let controller;
let stream = new ReadableStream({
start(c) {
controller = c;
}
});
drainJobQueue();
// Track promises.
let status = new Map;
setPromiseRejectionTrackerCallback((p, x) => { status.set(p, x); });
// Per Streams spec 3.7.5 step 5, this creates a rejected promise
// (reader.closed) but marks it as handled.
let reader = stream.getReader();
if (!readable) {
controller.close();
}
reader.releaseLock();
// Check that the promise's status is not 0 (unhandled);
// it may be either 1 (handled) or undefined (never tracked).
let result = status.get(reader.closed);
assertEq(result === 1 || result === undefined, true);
}
test(true);
test(false);
|