- From: Domenic Denicola <notifications@github.com>
- Date: Sun, 22 Jan 2023 17:57:58 -0800
- To: whatwg/fetch <fetch@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/fetch/pull/1593/review/1264936181@github.com>
@domenic commented on this pull request.
> + <li>If |stream|'s [=ReadableStream/current BYOB request view=] is non-null, then set
+ |desiredSize| to |stream|'s [=ReadableStream/current BYOB request view=]'s [=BufferSource/byte
+ length=].
+
+ <li>Let |extractSize| be the smaller value of |available| and |desiredSize|.
+
+ <li>Let <var>bytes</var> be the result of extracting |extractSize| of bytes from
+ <var>buffer</var>.
+
+ <li>If |stream|s [=ReadableStream/current BYOB request view=] is non-null, then
+ [=ArrayBufferView/write=] |bytes| into |stream|'s [=ReadableStream/current BYOB request view=],
+ and set |view| to |stream|'s [=ReadableStream/current BYOB request view=]. <li>Otherwise, set
+ |view| to the result of [=ArrayBufferView/create|creating=] a {{Uint8Array}} from |bytes| in
+ |stream|'s [=relevant Realm=].
+
+ <li>[=ReadableStream/Enqueue=] |view| into |stream|.
Don't enqueue the current BYOB request view. Only enqueue if you needed to create a new view.
> +
+ <li>Let |extractSize| be the smaller value of |available| and |desiredSize|.
+
+ <li>Let <var>bytes</var> be the result of extracting |extractSize| of bytes from
+ <var>buffer</var>.
+
+ <li>If |stream|s [=ReadableStream/current BYOB request view=] is non-null, then
+ [=ArrayBufferView/write=] |bytes| into |stream|'s [=ReadableStream/current BYOB request view=],
+ and set |view| to |stream|'s [=ReadableStream/current BYOB request view=]. <li>Otherwise, set
+ |view| to the result of [=ArrayBufferView/create|creating=] a {{Uint8Array}} from |bytes| in
+ |stream|'s [=relevant Realm=].
+
+ <li>[=ReadableStream/Enqueue=] |view| into |stream|.
+
+ <li><p>If |stream| is [=ReadableStream/errored=], then [=fetch controller/terminate=]
+ |fetchParams|'s [=fetch params/controller=].
I don't think this can happen inside pull. I think it needs to be separate, something like, if the network blows up, terminate the controller and error the stream.
I guess below there is already a line that does that, but it doesn't error the stream? Is there some way in which terminating the controller errors the stream, which I haven't seen?
> + <li>Let <var>bytes</var> be the result of extracting |extractSize| of bytes from
+ <var>buffer</var>.
+
+ <li>If |stream|s [=ReadableStream/current BYOB request view=] is non-null, then
+ [=ArrayBufferView/write=] |bytes| into |stream|'s [=ReadableStream/current BYOB request view=],
+ and set |view| to |stream|'s [=ReadableStream/current BYOB request view=]. <li>Otherwise, set
+ |view| to the result of [=ArrayBufferView/create|creating=] a {{Uint8Array}} from |bytes| in
+ |stream|'s [=relevant Realm=].
+
+ <li>[=ReadableStream/Enqueue=] |view| into |stream|.
+
+ <li><p>If |stream| is [=ReadableStream/errored=], then [=fetch controller/terminate=]
+ |fetchParams|'s [=fetch params/controller=].
+
+ <li><p>If |stream| doesn't [=ReadableStream/need more data=], ask the user agent to
+ [=fetch/suspend=] the ongoing fetch.
In this model, we don't consult "need more data" at all. We should instead have something vague near the definition of _buffer_ about how we expect that the buffer getting too full / too empty will suspend/resume.
--
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/fetch/pull/1593#pullrequestreview-1264936181
You are receiving this because you are subscribed to this thread.
Message ID: <whatwg/fetch/pull/1593/review/1264936181@github.com>
Received on Monday, 23 January 2023 01:58:10 UTC