TransformStreamDefaultController.error(reason) errors both sides of the transform with the supplied reason. terminate() takes an asymmetric path: it closes the readable side, creates a termination TypeError and errors the writable side. A downstream reader can therefore reach normal end after queued readable output while a writer or pending write fails. Treating termination as a synonym for controller.error hides the side-specific contract.
This specialist guide belongs to the Websites root. It also connects to The Gold Standard of Education | Learning That Transfers into Life and the How X Works hub. The worked cases are original teaching examples; their values and event logs are stated so each conclusion can be checked.
eduKateSG · Websites
Find your next learning step
Build a transform that enqueues two output chunks and then either calls error(E) or terminate(). Observe the reader, writer.write promises, writer.closed and reader.closed independently. Repeat with queued output, a pending transform, a later write, pipeThrough and a flush callback. The changed cases expose which side closes, which side errors and which reason appears.
ROUTE 1 · CHAPTERS 1–3
Build the first model
Name the input, state, conversion or predicate before following user-visible results.
ROUTE 2 · CHAPTERS 4–5
Trace the decisive branch
Work the accepted path and the nearest boundary case with original examples.
ROUTE 3 · CHAPTERS 6–8
Change one premise
Rebuild the mechanism when state, value, realm, timing or object kind changes.
ROUTE 4 · CHAPTERS 9–10
Handle limits and failures
Keep abrupt completion, availability and application limits visible.
ROUTE 5 · CHAPTERS 11–12
Verify and explain
Use a decisive fixture, changed-context check and concise final account.
Chapter contents
Build the first model · Chapters 1–3
Trace the decisive branch · Chapters 4–5
Change one premise · Chapters 6–8
6. Discard queued output on error
Handle limits and failures · Chapters 9–10
Verify and explain · Chapters 11–12
The short answer is that a TransformStream contains coupled readable and writable sides whose terminal states can differ. Chapter 1 focuses on map the two sides first. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. label readable R and writable W before any controller action. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for map the two sides first is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. inspect only the outer TransformStream object and show why it cannot replace side ledgers. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: one controller call can produce asymmetric side states. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. record R state, W state and each active promise separately. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of map the two sides first should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
The short answer is that ordinary transform work accepts a write, enqueues output and fulfils the write according to transform completion and backpressure. Chapter 2 focuses on establish a normal transform. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. write input a, enqueue output A and consume A. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for establish a normal transform is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. hold the readable consumer so backpressure delays write settlement. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: normal completion provides the baseline for later terminal paths. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. log transform entry, enqueue, read and write settlement order. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of establish a normal transform should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
The short answer is that controller.error(E) invokes the transform error path so both readable and writable sides fail with E. Chapter 3 focuses on error with a supplied reason. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. enqueue A, call error(E) and observe pending or later reads and writes. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for error with a supplied reason is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. call error before any output is enqueued and compare the empty readable queue. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: queued output can be discarded when the readable side errors. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. assert exact reason identity across both sides. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of error with a supplied reason should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
The short answer is that controller.terminate() closes the readable controller and errors the writable side with a termination TypeError. Chapter 4 focuses on terminate asymmetrically. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. enqueue A, terminate and let the reader consume A before done true. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for terminate asymmetrically is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. replace terminate with error(E) and show the reader rejects instead of reaching ordinary end. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: termination communicates no more output while rejecting further input. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. assert reader sequence, writable rejection class and side states. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of terminate asymmetrically should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
CHAPTER 5 OF 12 · Trace the decisive branch
5. Preserve queued readable output on terminate
The short answer is that closing a readable side lets already queued chunks drain before the terminal done result. Chapter 5 focuses on preserve queued readable output on terminate. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. queue A and B, terminate, then read A, B and done. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for preserve queued readable output on terminate is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. consume A before termination and verify only B remains. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: closure preserves queue order but does not promise application processing. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. record queue snapshots and read settlements. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of preserve queued readable output on terminate should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
The short answer is that erroring the readable side resets its queued work so a pending reader observes failure rather than preserved output. Chapter 6 focuses on discard queued output on error. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. queue A and B and call error(E) before reads. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for discard queued output on error is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. read A first and error before B to preserve only the already-settled value. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: already delivered values are historical while unread queue entries follow error cleanup. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. reconcile each output as delivered or discarded. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of discard queued output on error should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
The short answer is that the writable side is errored with termination TypeError so later writer.write calls reject. Chapter 7 focuses on reject future writes after termination. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. terminate after first output and attempt writes b and c. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for reject future writes after termination is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. close the writer normally instead and compare fulfilled close with rejected post-close writes. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: the termination error is specified and need not equal an application error reason. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. check exception class, write promise IDs and writer.closed. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of reject future writes after termination should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
The short answer is that termination or error during active transform work must be traced with the current write rather than inferred from later calls. Chapter 8 focuses on settle an in-flight transform. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. gate transform of a, invoke terminal action and release the gate. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for settle an in-flight transform is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. invoke the action only after transform a fulfils. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: callback timing affects which write is already in flight but not the defined side contract. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. number callback, controller action and promise settlement events. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of settle an in-flight transform should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
CHAPTER 9 OF 12 · Handle limits and failures
9. Compare reader.closed and writer.closed
The short answer is that reader.closed fulfils on termination closure while writer.closed rejects; controller.error makes reader.closed reject too. Chapter 9 focuses on compare reader.closed and writer.closed. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. attach observers to both closed promises before calling terminate. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for compare reader.closed and writer.closed is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. attach them after terminal state and confirm they still report established outcomes. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: closed promises report side lifecycle and are not interchangeable with one read or write promise. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. assert fulfillment or rejection and reasons for all four observations. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of compare reader.closed and writer.closed should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
The short answer is that terminate inside transformation ends the readable side without turning transformer flush into ordinary successful close work. Chapter 10 focuses on keep flush separate. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. close the writer after earlier termination and record whether flush is reached. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for keep flush separate is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. perform an orderly writer close without termination and let flush enqueue a final marker. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: flush behavior belongs to orderly sink close, not every terminal condition. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. log flush call count and final output list. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of keep flush separate should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
The short answer is that the returned readable exposes downstream closure or error while the internally managed pipe promise governs propagation from upstream. Chapter 11 focuses on trace a pipethrough chain. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. pipe source values through transforms that error or terminate after the first chunk. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for trace a pipethrough chain is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. set preventCancel or preventAbort in a separate pipeTo fixture and identify which action is suppressed. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: pipe controls do not change the controller’s basic side-state semantics. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. record source cancel, destination abort and downstream reader outcome. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of trace a pipethrough chain should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
The short answer is that a complete receipt states controller action, readable queue fate, readable terminal result, writable error and every promise reason. Chapter 12 focuses on build a two-sided terminal receipt. Begin with keep transform controller action, readable queue, readable state, writable state, current transform promise, write requests, reader results, writer.closed, reader.closed and pipe promise in separate columns. Writing those facts first prevents a familiar label or final summary value from replacing the mechanism or measurement basis that actually decides the result.
Worked example. run matched error(E) and terminate fixtures with A queued. Treat every stated value as part of a controlled teaching fixture. Record the starting state before the operation, then record each conversion, selection, calculation, check or state transition in order. If a prerequisite fails, stop the trace there rather than inferring later effects from the usual path.
A useful first-principles question for build a two-sided terminal receipt is: what must already be true before this step can run? Use the rule above to separate the input contract from the result. Follow object identity, state and returned value independently. Two branches can print similar data while differing in ownership, timing, brand or future capability.
Now change exactly one premise. remove queued output and predict the simpler reader evidence. Recalculate the trace from the changed fact rather than editing the old conclusion. Name the earliest event that differs, carry that difference through the remaining steps, and say which observations stay the same because their prerequisites did not change.
The main limit is this: the receipt proves the Streams contract and not business success of processed chunks. Keep language semantics separate from processor strategy, host scheduling, browser support, trust policy and the meaning assigned by an application. A focused example can establish the stated mechanism without pretending to settle those broader questions.
Practical evidence check. verify all side states, no duplicate settlements and exact reason identities. Capture the reported values and failure conditions, but also preserve the calculation or event trail that led to them. A check that asserts only the last number or label can pass even when an earlier selection, conversion, grouping, state change or measurement basis was wrong.
A concise final explanation of build a two-sided terminal receipt should state the starting state, the governing rule, the ordered outcome and one boundary. It should not depend on a screenshot, one software message or an unstated assumption. That form is short enough for revision and precise enough for a reproducible technical note.
Contents · Previous chapter · Return to the Websites subject guide
Frequently asked questions
Does terminate error both sides?
No. It closes the readable side and errors the writable side with a termination TypeError.
What does controller.error do?
It errors both sides with the supplied reason.
Can queued output survive termination?
Yes. Closing lets queued readable chunks drain before done.
Can queued output survive controller.error?
Unread queued output is not delivered after the readable side errors.
What happens to later writes after terminate?
They reject because the writable side is errored.
Which promises should be checked?
Individual reads and writes plus reader.closed and writer.closed.
Continue through the verified reading routes
Start with the wider system
The Gold Standard of Websites · The Gold Standard of Education | Learning That Transfers into Life · How X Works hub
Compare the closest mechanisms
The Gold Standard of Websites | Separating TransformStream Backpressure from Writable Write Completion · The Gold Standard of Websites | Separating pipeThrough Returned Readable from Its Internally Handled pipeTo Promise · The Gold Standard of Websites | Separating pipeTo Shutdown Controls Across preventAbort, preventCancel and preventClose · The Gold Standard of Websites | Separating WritableStream Abort from Underlying Sink Close · The Gold Standard of Websites | Separating ReadableByteStreamController Error Cleanup from Pending BYOB Read Rejection · The Gold Standard of Websites | Tracing BYOB Reader Release with a Partially Filled Pull-Into Descriptor · The Gold Standard of Websites | Separating Queuing-Strategy Size Callback Failure from Backpressure Caused by a Large Valid Size
Choose the next lesson by reader job
Use the subject root to move from this focused mechanism to the next verified question. Follow a specialist link when its preconditions match your code; return to the wider hub when the next task belongs to a different system.
Authoritative sources and evidence checks
WHATWG Streams — TransformStream · WHATWG Streams — TransformStreamDefaultController · WHATWG Streams — transform controller terminate algorithm · WHATWG Streams source repository
The normative mechanism follows the WHATWG Streams Living Standard, last updated 25 October 2026 when checked for this article. The worked buffers, queues, promise settlements and callback logs are original teaching fixtures. They establish the specified stream behavior; they do not claim network delivery, storage durability or application acceptance.