Source code
Revision control
Copy as Markdown
Other Tools
// |jit-test| skip-if: !this.hasOwnProperty("ReadableStream")
// Test uncatchable error when a stream source's pull() method is called.
// Make `debugger;` raise an uncatchable error.
let g = newGlobal({newCompartment: true});
g.parent = this;
g.hit = false;
g.eval(`
new Debugger(parent).onDebuggerStatement = _frame => (hit = true, null);
`);
// Create a stream whose pull() method raises an uncatchable error,
// and try reading from it.
let readerCreated = false;
let fnFinished = false;
async function fn() {
try {
let stream = new ReadableStream({
start(controller) {},
pull(controller) {
debugger;
}
});
let reader = stream.getReader();
let p = reader.read();
readerCreated = true;
await p;
} finally {
fnFinished = true;
}
}
fn();
drainJobQueue();
assertEq(readerCreated, true);
assertEq(g.hit, true);
assertEq(fnFinished, false);