- From: Mattias Buelens <notifications@github.com>
- Date: Mon, 04 Oct 2021 12:53:55 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Monday, 4 October 2021 19:54:08 UTC
Confirmed, I can get the reference implementation to throw an `AssertionError` with your test:
```javascript
promise_test(async () => {
const rs = new ReadableStream({
type: 'bytes',
autoAllocateChunkSize: 10,
pull(c) {
c.enqueue(new Uint8Array(10));
c.byobRequest.respond(10);
}
});
const reader = rs.getReader();
console.log(await reader.read());
console.log(await reader.read());
console.log('test');
}, '#1170');
```
(I did need to call `read()` twice though.)
Things start to go wrong immediately in [ReadableByteStreamControllerEnqueue](https://streams.spec.whatwg.org/commit-snapshots/8bbfbf83ad06a8b9224bbe1cfbcbbbdbdd827a19/#readable-byte-stream-controller-enqueue). We end up in step 10.2, where we fulfill the `read()` request *but we do not remove the auto-allocated pull-into descriptor*. Probably because we assumed that there wouldn't be any that need to be removed, which turns out to be wrong. Woops! 😛
This is definitely a spec bug. Thanks for reporting! 😁
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/issues/1170#issuecomment-933805243
Received on Monday, 4 October 2021 19:54:08 UTC