summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/streams/readable-byte-streams/enqueue-with-detached-buffer.any.js
blob: 92bd0a26a0ec05c2c3b8dcd25ce347964d1705d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 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');