@@ -6166,19 +6166,6 @@ returns a positive number.
6166
6166
JavaScript value |e|, perform !
6167
6167
[$ReadableStreamDefaultControllerError$] (|stream|.[=ReadableStream/[[controller]]=] , |e|).
6168
6168
6169
- <div algorithm>
6170
- To <dfn export for="ReadableStream" lt="create a proxy|creating a proxy">create a proxy</dfn> for a
6171
- {{ReadableStream}} |stream|, perform the following steps. The result will be a new
6172
- {{ReadableStream}} object which pulls its data from |stream|, while |stream| itself becomes
6173
- immediately [=ReadableStream/locked=] and [=ReadableStream/disturbed=] .
6174
-
6175
- 1. Let |identityTransform| be the result of <a>creating an identity `TransformStream`</a> .
6176
- 1. Let |promise| be ! [$ReadableStreamPipeTo$] (|stream|,
6177
- |identityTransform|.[=TransformStream/[[writable]]=] , false, false, false, undefined).
6178
- 1. Set |promise|.\[[PromiseIsHandled]] to true.
6179
- 1. Return |identityTransform|.[=TransformStream/[[readable]]=] .
6180
- </div>
6181
-
6182
6169
<h4 id="other-specs-rs-reading">Reading</h4>
6183
6170
6184
6171
The following algorithms can be used on arbitrary {{ReadableStream}} instances, including ones that
@@ -6548,6 +6535,63 @@ Streams</cite> is an example of this technique, with its `sender.createEncodedSt
6548
6535
Despite such endpoint pairs obeying the `readable`/`writable` property contract, it never makes
6549
6536
sense to pass them to {{ReadableStream/pipeThrough()}} .
6550
6537
6538
+ <h3 id="other-specs-piping">Piping</h3>
6539
+
6540
+ <div algorithm="ReadableStream pipe to">
6541
+ The result of a {{ReadableStream}} |readable| <dfn export for="ReadableStream" lt="pipe|pipe
6542
+ to|piped to|piping to"> piped to</dfn> a {{WritableStream}} |writable|, given an optional boolean
6543
+ <dfn export for="ReadableStream/pipe to,ReadableStream/piped to"><var>preventClose</var></dfn>
6544
+ (default false), an optional boolean <dfn export for="ReadableStream/pipe to,ReadableStream/piped
6545
+ to"><var> preventAbort</var></dfn> (default false), an optional boolean <dfn export
6546
+ for="ReadableStream/pipe to,ReadableStream/piped to"><var> preventCancel</var></dfn> (default
6547
+ false), and an optional {{AbortSignal}} <dfn export for="ReadableStream/pipe
6548
+ to,ReadableStream/piped to"><var> signal</var></dfn> , is given by performing the following steps.
6549
+ They will return a {{Promise}} that fulfills when the pipe completes, or rejects with an exception
6550
+ if it fails.
6551
+
6552
+ 1. Assert: ! [$IsReadableStreamLocked$] (|readable|) is false.
6553
+ 1. Assert: ! [$IsWritableStreamLocked$] (|writable|) is false.
6554
+ 1. Let |signalArg| be |signal| if |signal| was given, or undefined otherwise.
6555
+ 1. Return ! [$ReadableStreamPipeTo$] (|readable|, |writable|, |preventClose|, |preventAbort|,
6556
+ |preventCancel|, |signalArg|).
6557
+
6558
+ <p class="note"> If one doesn't care about the promise returned, referencing this concept can be a
6559
+ bit awkward. The best we can suggest is "[=ReadableStream/pipe=] <var ignore> readable</var> to <var
6560
+ ignore> writable</var> ".</p>
6561
+ </div>
6562
+
6563
+ <div algorithm="ReadableStream pipe through">
6564
+ The result of a {{ReadableStream}} |readable| <dfn export for="ReadableStream" lt="pipe
6565
+ through|piped through|piping through"> piped through</dfn> a {{TransformStream}} |transform|, given
6566
+ an optional boolean <dfn export for="ReadableStream/pipe through,ReadableStream/piped
6567
+ through"><var> preventClose</var></dfn> (default false), an optional boolean <dfn export
6568
+ for="ReadableStream/pipe through,ReadableStream/piped through"><var> preventAbort</var></dfn>
6569
+ (default false), an optional boolean <dfn export for="ReadableStream/pipe
6570
+ through,ReadableStream/piped through"><var> preventCancel</var></dfn> (default false), and an
6571
+ optional {{AbortSignal}} <dfn export for="ReadableStream/pipe through,ReadableStream/piped
6572
+ through"><var> signal</var></dfn> , is given by performing the following steps. The result will be
6573
+ the [=readable side=] of |transform|.
6574
+
6575
+ 1. Assert: ! [$IsReadableStreamLocked$] (|readable|) is false.
6576
+ 1. Assert: ! [$IsWritableStreamLocked$] (|transform|.[=TransformStream/[[writable]]=] ) is false.
6577
+ 1. Let |signalArg| be |signal| if |signal| was given, or undefined otherwise.
6578
+ 1. Let |promise| be ! [$ReadableStreamPipeTo$] (|readable|,
6579
+ |transform|.[=TransformStream/[[writable]]=] , |preventClose|, |preventAbort|, |preventCancel|,
6580
+ |signalArg|).
6581
+ 1. Set |promise|.\[[PromiseIsHandled]] to true.
6582
+ 1. Return |transform|.[=TransformStream/[[readable]]=] .
6583
+ </div>
6584
+
6585
+ <div algorithm>
6586
+ To <dfn export for="ReadableStream" lt="create a proxy|creating a proxy">create a proxy</dfn> for a
6587
+ {{ReadableStream}} |stream|, perform the following steps. The result will be a new
6588
+ {{ReadableStream}} object which pulls its data from |stream|, while |stream| itself becomes
6589
+ immediately [=ReadableStream/locked=] and [=ReadableStream/disturbed=] .
6590
+
6591
+ 1. Let |identityTransform| be the result of <a>creating an identity `TransformStream`</a> .
6592
+ 1. Return the result of |stream| [=ReadableStream/piped through=] |identityTransform|.
6593
+ </div>
6594
+
6551
6595
<h2 id="creating-examples">Examples of creating streams</h2>
6552
6596
6553
6597
<div class="non-normative">
0 commit comments