21 lines
752 B
JavaScript
21 lines
752 B
JavaScript
// META: global=window,worker,shadowrealm
|
|
|
|
promise_test(async t => {
|
|
const error = new Error('cannot proceed');
|
|
const rs = new ReadableStream({
|
|
type: 'bytes',
|
|
pull: t.step_func((controller) => {
|
|
const buffer = controller.byobRequest.view.buffer;
|
|
// Detach the buffer.
|
|
structuredClone(buffer, { transfer: [buffer] });
|
|
|
|
// Try to enqueue with a new buffer.
|
|
assert_throws_js(TypeError, () => controller.enqueue(new Uint8Array([42])));
|
|
|
|
// If we got here the test passed.
|
|
controller.error(error);
|
|
})
|
|
});
|
|
const reader = rs.getReader({ mode: 'byob' });
|
|
await promise_rejects_exactly(t, error, reader.read(new Uint8Array(1)));
|
|
}, 'enqueue after detaching byobRequest.view.buffer should throw');
|