- From: Domenic Denicola <notifications@github.com>
- Date: Mon, 12 Dec 2022 20:54:49 -0800
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/pull/1250/review/1214714592@github.com>
@domenic commented on this pull request. This works surprisingly well! I think we should just be a bit more aggressive. > 1. Let |promise| be [=a new promise=]. - 1. Let |bytes| be an empty [=byte sequence=]. - 1. [=Read-loop=] given |reader|, |bytes|, and |promise|. - 1. Return |promise|. + 1. Let |success steps| given a [=byte sequence=] |data| be to [=resolve=] |promise| with |data|. + 1. Let |failure steps| given a JavaScript value |error| be to [=reject=] |promise| with |error|. + 1. [=Consume all bytes=] from |reader| given |success steps| and |failure steps|. I'd like to get rid of "read all bytes as a promise". Nobody should use it, for various reasons (e.g. having to deal with `then` tampering). https://dontcallmedom.github.io/webdex/r.html#read%20all%20bytes%40%40ReadableStreamDefaultReader%40dfn implies it wouldn't be so bad to break some consumers; I think we could fix Fetch ourselves, file issues on the rest, then move on. > 1. Let |promise| be [=a new promise=]. - 1. Let |bytes| be an empty [=byte sequence=]. - 1. [=Read-loop=] given |reader|, |bytes|, and |promise|. - 1. Return |promise|. + 1. Let |success steps| given a [=byte sequence=] |data| be to [=resolve=] |promise| with |data|. + 1. Let |failure steps| given a JavaScript value |error| be to [=reject=] |promise| with |error|. + 1. [=Consume all bytes=] from |reader| given |success steps| and |failure steps|. + + <p>To <dfn export for="ReadableStreamDefaultReader">consume all bytes</dfn> from + {{ReadableStreamDefaultReader}} |reader|, given |success steps|, which is an algorithm accepting a successSteps and failureSteps, per more modern style, here and below. > 1. Let |readRequest| be a new [=read request=] with the following [=struct/items=]: : [=read request/chunk steps=], given |chunk| :: - 1. If |chunk| is not a {{Uint8Array}} object, [=reject=] |promise| with a {{TypeError}} and + 1. If |chunk| is not a {{Uint8Array}} object, call |failure steps| with a {{TypeError}} and abort these steps. 1. Append the bytes represented by |chunk| to |bytes|. While here, it might be best to use https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy to more rigorously convert |chunk| to a byte sequence. -- Reply to this email directly or view it on GitHub: https://github.com/whatwg/streams/pull/1250#pullrequestreview-1214714592 You are receiving this because you are subscribed to this thread. Message ID: <whatwg/streams/pull/1250/review/1214714592@github.com>
Received on Tuesday, 13 December 2022 04:55:02 UTC