@@ -539,7 +539,17 @@ Instances of <code>ReadableStreamReader</code> are created with the internal slo
539
539
<tr>
540
540
<td> \[[readRequests]]
541
541
<td> A List of promises returned by calls to the reader's <code> read()</code> method that have not yet been resolved,
542
- due to the <a>consumer</a> requesting <a>chunks</a> sooner than they are available.
542
+ due to the <a>consumer</a> requesting <a>chunks</a> sooner than they are available
543
+ </tr>
544
+ <tr>
545
+ <td> \[[state]]
546
+ <td> A string containing the reader's current state, used internally; one of <code> "readable"</code> ,
547
+ <code> "closed"</code> , or <code> "errored"</code>
548
+ </tr>
549
+ <tr>
550
+ <td> \[[storedError]]
551
+ <td> A value indicating how the reader's stream failed, to be given as a failure reason or exception when trying to
552
+ operate on the reader; applicable only when \[[state]] is <code> "errored"</code>
543
553
</tr>
544
554
</table>
545
555
@@ -556,12 +566,12 @@ Instances of <code>ReadableStreamReader</code> are created with the internal slo
556
566
<li> If IsReadableStreamLocked(<var> stream</var> ) is <b> true</b> , throw a <b> TypeError</b> exception.
557
567
<li> Set <var> stream</var> @\[[reader]] to <b> this</b> .
558
568
<li> Set <b> this</b> @\[[ownerReadableStream]] to <var> stream</var> .
569
+ <li> Set <b> this</b> @\[[state]] to <code> "readable"</code> .
570
+ <li> Set <b> this</b> @\[[storedError]] to <b> undefined</b> .
559
571
<li> Set <b> this</b> @\[[readRequests]] to a new empty List.
560
572
<li> Set <b> this</b> @\[[closedPromise]] to a new promise.
561
- <li> If <var> stream</var> @\[[state]] is <code> "closed"</code> , resolve <b> this</b> @\[[closedPromise]] with
562
- <b> undefined</b> .
563
- <li> If <var> stream</var> @\[[state]] is <code> "errored"</code> , reject <b> this</b> @\[[closedPromise]] with
564
- <var> stream</bar> @\[[storedError]] .
573
+ <li> If <var> stream</var> @\[[state]] is <code> "closed"</code> or <code> "errored"</code> , call-with-rethrow
574
+ ReleaseReadableStreamReader(<b> this</b> ).
565
575
</ol>
566
576
567
577
<h4 id="reader-prototype">Properties of the <code>ReadableStreamReader</code> Prototype</h4>
@@ -614,11 +624,12 @@ Instances of <code>ReadableStreamReader</code> are created with the internal slo
614
624
615
625
<ol>
616
626
<li> If IsReadableStreamReader(<b> this</b> ) is <b> false</b> , throw a <b> TypeError</b> exception.
617
- <li> If <b> this</b> @\[[ownerReadableStream]] is <b> undefined</b> or
618
- <b> this</b> @\[[ownerReadableStream]] @\[[state]] is <code> "closed"</code> , return a new promise resolved with
627
+ <li> If <b> this</b> @\[[state]] is <code> "closed"</code> , return a new promise resolved with
619
628
CreateIterResultObject(<b> undefined</b> , <b> true</b> ).
620
- <li> If <b> this</b> @\[[ownerReadableStream]] @\[[state]] is <code> "errored"</code> , return a new promise
621
- rejected with <b> this</b> @\[[ownerReadableStream]] @\[[storedError]] .
629
+ <li> If <b> this</b> @\[[state]] is <code> "errored"</code> , return a new promise rejected with
630
+ <b> this</b> @\[[storedError]] .
631
+ <li> Assert: <b> this</b> @\[[ownerReadableStream]] is not <b> undefined</b> .
632
+ <li> Assert: <b> this</b> @\[[ownerReadableStream]] @\[[state]] is <code> "readable"</code> .
622
633
<li> If <b> this</b> @\[[ownerReadableStream]] @\[[queue]] is not empty,
623
634
<ol>
624
635
<li> Let <var> chunk</var> be DequeueValue(<b> this</b> @\[[ownerReadableStream]] @\[[queue]] ).
@@ -820,16 +831,8 @@ a variable <var>stream</var>, that performs the following steps:
820
831
<li> Let <var> stream</var> @\[[queue]] be a new empty List.
821
832
<li> Set <var> stream</var> @\[[storedError]] to <var> e</var> .
822
833
<li> Set <var> stream</var> @\[[state]] to <code> "errored"</code> .
823
- <li> If IsReadableStreamLocked(<var> stream</var> ) is <b> true</b> ,
824
- <ol>
825
- <li> Reject <var> stream</var> @\[[reader]] @\[[closedPromise]] with <var> e</var> .
826
- <li> Repeat for each <var> readRequestPromise</var> that is an element of
827
- <var> stream</var> @\[[reader]] @\[[readRequests]] ,
828
- <ol>
829
- <li> Reject <var> readRequestPromise</var> with <var> e</var> .
830
- </ol>
831
- <li> Set <var> stream</var> @\[[reader]] @\[[readRequests]] to a new empty List.
832
- </ol>
834
+ <li> If IsReadableStreamLocked(<var> stream</var> ) is <b> true</b> , return
835
+ ReleaseReadableStreamReader(<var> stream</var> @\[[reader]] ).
833
836
</ol>
834
837
835
838
<h4 id="is-readable-stream">IsReadableStream ( x )</h4>
@@ -865,14 +868,29 @@ a variable <var>stream</var>, that performs the following steps:
865
868
866
869
<ol>
867
870
<li> Assert: <var> reader</var> @\[[ownerReadableStream]] is not <b> undefined</b> .
868
- <li> Repeat for each <var> readRequestPromise </var> that is an element of <var> reader </var> @\ [[readRequests]] ,
871
+ <li> If <var> reader </var> @\ [[ownerReadableStream]] @\ [[state]] is <code> "errored" </code> ,
869
872
<ol>
870
- <li> Resolve <var> readRequestPromise</var> with CreateIterResultObject(<b> undefined</b> , <b> true</b> ).
873
+ <li> Set <var> reader</var> @\[[state]] to <code> "errored"</code> .
874
+ <li> Let <var> e</var> be <var> reader</var> @\[[ownerReadableStream]] @\[[storedError]] .
875
+ <li> Set <var> reader</var> @\[[storedError]] to <var> e</var> .
876
+ <li> Reject <var> reader</var> @\[[closedPromise]] with <var> e</var> .
877
+ <li> Repeat for each <var> readRequestPromise</var> that is an element of <var> reader</var> @\[[readRequests]] ,
878
+ <ol>
879
+ <li> Reject <var> readRequestPromise</var> with <var> e</var> .
880
+ </ol>
881
+ </ol>
882
+ <li> Otherwise,
883
+ <ol>
884
+ <li> Set <var> reader</var> @\[[state]] to <code> "closed"</code> .
885
+ <li> Resolve <var> reader</var> @\[[closedPromise]] with <b> undefined</b> .
886
+ <li> Repeat for each <var> readRequestPromise</var> that is an element of <var> reader</var> @\[[readRequests]] ,
887
+ <ol>
888
+ <li> Resolve <var> readRequestPromise</var> with CreateIterResultObject(<b> undefined</b> , <b> true</b> ).
889
+ </ol>
871
890
</ol>
872
891
<li> Set <var> reader</var> @\[[readRequests]] to a new empty List.
873
892
<li> Set <var> reader</var> @\[[ownerReadableStream]] @\[[reader]] to <b> undefined</b> .
874
893
<li> Set <var> reader</var> @\[[ownerReadableStream]] to <b> undefined</b> .
875
- <li> Resolve <var> reader</var> @\[[closedPromise]] with <b> undefined</b> .
876
894
</ol>
877
895
878
896
<h4 id="should-readable-stream-apply-backpressure">ShouldReadableStreamApplyBackpressure ( stream )</h4>
0 commit comments