@@ -33,6 +33,10 @@ urlPrefix:https://w3c.github.io/hr-time/#;spec:hr-time
33
33
url:dfn-coarsened-shared-current-time;text:coarsened shared current time
34
34
url:dfn-unsafe-shared-current-time;text:unsafe shared current time
35
35
type:typedef;url:dom-domhighrestimestamp;text:DOMHighResTimeStamp
36
+
37
+ urlPrefix:https://tc39.es/ecma262/#;type:dfn;spec:ecma-262
38
+ url:realm;text:realm
39
+ url:sec-list-and-record-specification-type;text:Record
36
40
</pre>
37
41
38
42
<pre class=link-defaults>
@@ -231,6 +235,9 @@ lt="authentication entry">authentication entries</a> (for HTTP authentication).
231
235
232
236
<dt> <dfn for="fetch controller">report timing steps</dfn> (default null)
233
237
<dd> Null or an algorithm accepting a <a for=/>global object</a> .
238
+
239
+ <dt> <dfn for="fetch controller">serialized abort reason</dfn> (default null)
240
+ <dd> Null or a <a>Record</a> (result of [$StructuredSerialize$] ).
234
241
</dl>
235
242
236
243
<p> To <dfn export for="fetch controller" id="finalize-and-report-timing">report timing</dfn> for a
@@ -254,8 +261,37 @@ given a <a>fetch controller</a> <var>controller</var>:
254
261
</ol>
255
262
256
263
<p>To <dfn export for="fetch controller">abort</dfn> a <a for=/>fetch controller</a>
257
- <var> controller</var> , set <var> controller</var> 's <a for="fetch controller">state</a> to
258
- "<code> aborted</code> ".
264
+ <var> controller</var> with an optional <var> error</var> :
265
+
266
+ <ol>
267
+ <li><p> Set <var> controller</var> 's <a for="fetch controller">state</a> to "<code> aborted</code> ".
268
+
269
+ <li><p> Let <var> fallbackError</var> be an "{{AbortError}} " {{DOMException}} .
270
+
271
+ <li><p> Set <var> error</var> to <var> fallbackError</var> if it is not given.
272
+
273
+ <li><p> Let <var> serializedError</var> be [$StructuredSerialize$] (<var> error</var> ).
274
+ If that threw an exception, catch it, and let <var> serializedError</var> be
275
+ [$StructuredSerialize$] (<var> fallbackError</var> ).
276
+
277
+ <li><p> Set <var> controller</var> 's <a for="fetch controller">serialized abort reason</a> to
278
+ <var> serializedError</var> .
279
+ </ol>
280
+
281
+ <p> To <dfn>deserialize a serialized abort reason</dfn> , given null or a <a>Record</a>
282
+ <var> abortReason</var> and a <a>realm</a> <var> realm</var> :
283
+
284
+ <ol>
285
+ <li><p> Let <var> fallbackError</var> be an "{{AbortError}} " {{DOMException}} .
286
+
287
+ <li><p> Let <var> deserializedError</var> be <var> fallbackError</var> .
288
+
289
+ <li><p> If <var> abortReason</var> is non-null, then set <var> deserializedError</var> to
290
+ [$StructuredDeserialize$] (<var> abortReason</var> , <var> realm</var> ). If that threw an exception or
291
+ returned undefined, then set <var> deserializedError</var> to <var> fallbackError</var> .
292
+
293
+ <li><p> Return <var> deserializedError</var> .
294
+ </ol>
259
295
260
296
<p> To <dfn export for="fetch controller">terminate</dfn> a <a for=/>fetch controller</a>
261
297
<var> controller</var> , set <var> controller</var> 's <a for="fetch controller">state</a> to
@@ -5673,7 +5709,8 @@ optional boolean <var>forceNewConnection</var> (default false), run these steps:
5673
5709
ongoing fetch if it is <a lt=suspend for=fetch>suspended</a> .
5674
5710
5675
5711
<li><p> Let <var> cancelAlgorithm</var> be an algorithm that <a for="fetch controller">aborts</a>
5676
- <var> fetchParams</var> 's <a for="fetch params">controller</a> .
5712
+ <var> fetchParams</var> 's <a for="fetch params">controller</a> with <var> reason</var> , given
5713
+ <var> reason</var> .
5677
5714
5678
5715
<li><p> Let <var> highWaterMark</var> be a non-negative, non-NaN number, chosen by the user agent.
5679
5716
@@ -5793,9 +5830,13 @@ optional boolean <var>forceNewConnection</var> (default false), run these steps:
5793
5830
<ol>
5794
5831
<li><p> Set <var> response</var> 's <a for=response>aborted flag</a> .
5795
5832
5796
- <li><p> If <var> stream</var> is <a for=ReadableStream>readable</a> ,
5797
- <a for=ReadableStream>error</a> <var> stream</var> with an
5798
- "<code> <a exception>AbortError</a> </code> " {{DOMException}} .
5833
+ <li><p> If <var> stream</var> is <a for=ReadableStream>readable</a> , then
5834
+ <a for=ReadableStream>error</a> <var> stream</var> with the result of
5835
+ <a>deserialize a serialized abort reason</a> given <var> fetchParams</var> 's
5836
+ <a for="fetch params">controller</a> 's <a for="fetch controller">serialized abort reason</a>
5837
+ and an <a>implementation-defined</a> <a>realm</a> .
5838
+ <!-- XXX: At some point we really need to sort out how JavaScript streams interact with the
5839
+ network layer a bit better. -->
5799
5840
</ol>
5800
5841
5801
5842
<li><p> Otherwise, if <var> stream</var> is <a for=ReadableStream>readable</a> ,
@@ -7004,8 +7045,8 @@ object), initially null.
7004
7045
<hr>
7005
7046
7006
7047
<p> To <dfn export for=Request lt=create|creating>create</dfn> a {{Request}} object, given a
7007
- <a for=/>request</a> <var> request</var> , <a for=/>headers guard</a> <var> guard</var> , and Realm
7008
- <var> realm</var> , run these steps:
7048
+ <a for=/>request</a> <var> request</var> , <a for=/>headers guard</a> <var> guard</var> , and
7049
+ <a>realm</a> < var> realm</var> , run these steps:
7009
7050
7010
7051
<ol>
7011
7052
<li><p> Let <var> requestObject</var> be a <a for=/>new</a> {{Request}} object with <var> realm</var> .
@@ -7563,8 +7604,8 @@ enum ResponseType { "basic", "cors", "default", "error", "opaque", "opaqueredire
7563
7604
<hr>
7564
7605
7565
7606
<p> To <dfn export for=Response lt=create|creating>create</dfn> a {{Response}} object, given a
7566
- <a for=/>response</a> <var> response</var> , <a for=/>headers guard</a> <var> guard</var> , and Realm
7567
- <var> realm</var> , run these steps:
7607
+ <a for=/>response</a> <var> response</var> , <a for=/>headers guard</a> <var> guard</var> , and
7608
+ <a>realm</a> < var> realm</var> , run these steps:
7568
7609
7569
7610
<ol>
7570
7611
<li><p> Let <var> responseObject</var> be a <a for=/>new</a> {{Response}} object with
@@ -7771,7 +7812,8 @@ method steps are:
7771
7812
then:
7772
7813
7773
7814
<ol>
7774
- <li><p> <a>Abort fetch</a> with <var> p</var> , <var> request</var> , and null.
7815
+ <li><p> <a>Abort the <code>fetch()</code> call</a> with <var> p</var> , <var> request</var> , null, and
7816
+ <var> requestObject</var> 's <a for=Request>signal</a>' s <a for=AbortSignal>abort reason</a> .
7775
7817
7776
7818
<li><p> Return <var> p</var> .
7777
7819
</ol>
@@ -7801,10 +7843,12 @@ method steps are:
7801
7843
<ol>
7802
7844
<li><p> Set <var> locallyAborted</var> to true.
7803
7845
7804
- <li><p> <a>Abort fetch</a> with <var> p</var> , <var> request</var> , and <var> responseObject</var> .
7846
+ <li><p> <a>Abort the <code>fetch()</code> call</a> with <var> p</var> , <var> request</var> , <var> responseObject</var> ,
7847
+ and <var> requestObject</var> 's <a for=Request>signal</a>' s <a for=AbortSignal>abort reason</a> .
7805
7848
7806
7849
<li><p> If <var> controller</var> is not null, then <a for="fetch controller">abort</a>
7807
- <var> controller</var> .
7850
+ <var> controller</var> with <var> requestObject</var> 's <a for=Request>signal</a>' s
7851
+ <a for=AbortSignal>abort reason</a> .
7808
7852
</ol>
7809
7853
7810
7854
<li>
@@ -7815,9 +7859,17 @@ method steps are:
7815
7859
<ol>
7816
7860
<li><p> If <var> locallyAborted</var> is true, terminate these substeps.
7817
7861
7818
- <li><p> If <var> response</var> 's <a for=response>aborted flag</a> is set, then <a>abort fetch</a>
7819
- with <var> p</var> , <var> request</var> , and <var> responseObject</var> , and terminate these
7820
- substeps.
7862
+ <li>
7863
+ <p> If <var> response</var> 's <a for=response>aborted flag</a> is set, then:
7864
+
7865
+ <ol>
7866
+ <li><p> Let <var> deserializedError</var> be the result of
7867
+ <a>deserialize a serialized abort reason</a> given <var> controller</var> 's
7868
+ <a for="fetch controller">serialized abort reason</a> and <var> relevantRealm</var> .
7869
+
7870
+ <li><p> <a>Abort the <code>fetch()</code> call</a> with <var> p</var> , <var> request</var> ,
7871
+ <var> responseObject</var> , and <var> deserializedError</var> .
7872
+ </ol>
7821
7873
7822
7874
<li><p> If <var> response</var> is a <a>network error</a> , then <a for=/>reject</a> <var> p</var>
7823
7875
with a {{TypeError}} and terminate these substeps.
@@ -7831,12 +7883,10 @@ method steps are:
7831
7883
<li><p> Return <var> p</var> .
7832
7884
</ol>
7833
7885
7834
- <p> To <dfn>abort fetch</dfn> with a <var> promise </var> , <var> request </var> , and
7835
- <var> responseObject</var> , run these steps:
7886
+ <p> To <dfn lt="Abort the fetch() call" export id=abort-fetch>abort a <code>fetch()</code> call</dfn> with a
7887
+ <var> promise </var> , <var> request </var> , <var> responseObject</var> , and an <var> error </var> , run these steps:
7836
7888
7837
7889
<ol>
7838
- <li><p> Let <var> error</var> be an "<code> <a exception>AbortError</a> </code> " {{DOMException}} .
7839
-
7840
7890
<li>
7841
7891
<p> <a for=/>Reject</a> <var> promise</var> with <var> error</var> .
7842
7892
@@ -8443,6 +8493,7 @@ Moritz Kneilmann,
8443
8493
Ms2ger,
8444
8494
Nico Schlömer,
8445
8495
Nicolás Peña Moreno,
8496
+ Nidhi Jaju,
8446
8497
Nikhil Marathe,
8447
8498
Nikki Bee,
8448
8499
Nikunj Mehta,
0 commit comments