- From: Jake Archibald <notifications@github.com>
- Date: Wed, 27 Oct 2021 03:58:26 -0700
- To: whatwg/fetch <fetch@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/fetch/pull/1329/review/790426284@github.com>
@jakearchibald requested changes on this pull request.
Just a few nits really.
> @@ -255,6 +258,29 @@ given a <a for=/>fetch timing info</a> <var>timingInfo</var>, return a new
<var>storedTimingInfo</var>'s <a for="fetch timing info">decoded body size</a>.
</ol>
+<p>To <dfn for="fetch params">abort</dfn> a <a for=/>fetch params</a> <var>fetchParams</var>,
+set <var>fetchParams</var>'s <a for="fetch params">fetch state</a> to "<code>aborted</code>".
+
+<p>To <dfn for="fetch params">terminate</dfn> a <a for=/>fetch params</a> <var>fetchParams</var>,
+set <var>fetchParams</var>'s <a for="fetch params">fetch state</a> to "<code>terminated</code>".
+
+<p>A <a for=/>fetch params</a> <var>fetchParams</var> is <dfn for="fetch params">canceled</dfn> if
+its <a for="fetch params">fetch state</a> is "<code>aborted</code>" or "<code>terminated</code>".
+
+<p>A <dfn export>fetch controller</dfn> is an object used to enable clients of an ongoing fetch
@annevk I've always tried to avoid calling spec constructs 'objects' to avoid confusion with platform objects, or is this not actually a problem?
> +<p>A <a for=/>fetch params</a> <var>fetchParams</var> is <dfn for="fetch params">canceled</dfn> if
+its <a for="fetch params">fetch state</a> is "<code>aborted</code>" or "<code>terminated</code>".
+
+<p>A <dfn export>fetch controller</dfn> is an object used to enable clients of an ongoing fetch
+to perform certain actions in the context of that fetch instance.
+
+<p>A <a for=/>fetch controller</a> has an associated <a for=/>fetch params</a>
+<dfn for="fetch controller">ongoing fetch params</dfn>.</p>
+
+<p>To <dfn export id="concept-fetch-terminate" for="fetch controller">terminate</dfn> a
+<a for=/>fetch controller</a> <var>controller</var>, <a for="fetch params">terminate</a>
+<var>controller</var>'s <a for="fetch controller">ongoing fetch params</a>.
+
+<p>To <dfn for="fetch controller">abort</dfn> a <a for=/>fetch controller</a>
+<var>controller</var>, <a for="fetch params">abort</a> <var>controller</var>'s
+<a for="fetch controller">ongoing fetch params</a>.
Nit: Is 'ongoing' the right name here, considering it might be completed, aborted, or terminated?
> @@ -255,6 +258,29 @@ given a <a for=/>fetch timing info</a> <var>timingInfo</var>, return a new
<var>storedTimingInfo</var>'s <a for="fetch timing info">decoded body size</a>.
</ol>
+<p>To <dfn for="fetch params">abort</dfn> a <a for=/>fetch params</a> <var>fetchParams</var>,
+set <var>fetchParams</var>'s <a for="fetch params">fetch state</a> to "<code>aborted</code>".
+
+<p>To <dfn for="fetch params">terminate</dfn> a <a for=/>fetch params</a> <var>fetchParams</var>,
+set <var>fetchParams</var>'s <a for="fetch params">fetch state</a> to "<code>terminated</code>".
+
+<p>A <a for=/>fetch params</a> <var>fetchParams</var> is <dfn for="fetch params">canceled</dfn> if
+its <a for="fetch params">fetch state</a> is "<code>aborted</code>" or "<code>terminated</code>".
+
+<p>A <dfn export>fetch controller</dfn> is an object used to enable clients of an ongoing fetch
+to perform certain actions in the context of that fetch instance.
A fetch controller only has fetch params, and only performs actions that can be performed on fetch params, so I'm struggling to see the point in it.
Why is it a separate thing?
> @@ -2065,6 +2091,11 @@ known as an <dfn export id=concept-aborted-network-error>aborted network error</
<a for=response>header list</a> is always empty, and
<a for=response>body</a> is always null.
+<p>To create the <dfn>appropriate network error</dfn> given <a for=/>fetch params</a>
+<var>fetchParams</var>, return an <a>aborted network error</a> if <var>fetchParams</var>'s
+<a for="fetch params">fetch state</a> is "<code>aborted</code>"; otherwise return a
+<a>network error</a>.
Is it worth adding an assert that the fetch state isn't "ongoing"?
> @@ -2247,14 +2278,14 @@ functionality.
<p>A <a for="fetch group">fetch record</a> has an associated
<dfn export for="fetch record" id=concept-fetch-record-fetch>fetch</dfn> (a
-<a for=/>fetch</a> algorithm or null).
+<a for=/>fetch controller</a> or null).
I can't see any cases where it's null.
>
<hr>
<p>When a <a for=fetch>fetch group</a> is
<dfn export for="fetch group" id=concept-fetch-group-terminate>terminated</dfn>, for each associated
<a for="fetch group">fetch record</a> whose <a for="fetch record">request</a>'s <a>done flag</a> is
-unset or <a for=request>keepalive</a> is false, <a lt=terminated for=fetch>terminate</a> the
+unset or <a for=request>keepalive</a> is false, <a for="fetch controller">terminate</a> the
<a for="fetch group">fetch record</a>'s <a for="fetch record">fetch</a>.
If the fetch can actually be null, then this bit is fragile.
> @@ -3816,13 +3846,15 @@ the request.
<ol>
<li><p>Let <var>record</var> be a new <a for="fetch group">fetch record</a> consisting of
- <var>request</var> and this instance of the <a for=/>fetch</a> algorithm.
+ <var>request</var> and <var>controller</var>.
Personally, I'd rather this referenced the properties of fetch record explicitly, so it turns up in the spec when you look for references to `fetch record/fetch`. WDYT @annevk?
> @@ -205,6 +205,9 @@ lt="authentication entry">authentication entries</a> (for HTTP authentication).
<dt><dfn for="fetch params">cross-origin isolated capability</dfn> (default false)
<dd>A boolean.
+ <dt><dfn for="fetch params">fetch state</dfn>
+ <dd>"<code>ongoing</code>", "<code>terminated</code>", or "<code>aborted</code>".
This needs to be given a default value, or the value needs to be set whenever fetch params are created.
> </ol>
<li><p>Let <var>pullAlgorithm</var> be an action that <a lt=resumed for=fetch>resumes</a> the
ongoing fetch if it is <a lt=suspend for=fetch>suspended</a>.
- <li><p>Let <var>cancelAlgorithm</var> be an action that <a lt=terminated for=fetch>terminates</a>
- the ongoing fetch with the aborted flag set.
+ <li><p>Let <var>cancelAlgorithm</var> be to <a for="fetch params">abort</a> <var>fetchParams</var>.
@annevk is this the right wording for creating an algorithm? It sounds a but clumsy.
--
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/fetch/pull/1329#pullrequestreview-790426284
Received on Wednesday, 27 October 2021 10:58:40 UTC