Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

stream: `pipeTo` with `preventCancel` can hit `ERR_INTERNAL_ASSERTION` if destination errors before deferred write

Offen
#63,732 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
52/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
javascript, node.js
Bereich
backend

Rechercherichtung

Führe die bereitgestellte Reproduktion auf v24.16.0 aus und vergleiche sie mit v24.14.1. Untersuche node:internal/webstreams/writablestream in Zeile 982 und node:internal/webstreams/readablestream in Zeile 1677 und prüfe anschließend PR #61800; abgeschlossen ist die Aufgabe, wenn ein Regressionstest bestätigt, dass preventCancel mit dem Zielfehler abgewiesen wird statt mit ERR_INTERNAL_ASSERTION.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Version

v24.16.0

Platform
Linux n37-114-192 5.15.120.bsk.3-amd64 #5.15.120.bsk.3 SMP Debian 5.15.120.bsk.3 Fri Dec 8 12:41:09 UTC x86_64 GNU/Linux
Subsystem

stream

What steps will reproduce the bug?
const { ReadableStream, WritableStream } = require("node:stream/web");

let sourceController;
let destController;

const source = new ReadableStream({
  start(controller) {
    sourceController = controller;
  },
});

const dest = new WritableStream({
  start(controller) {
    destController = controller;
  },
  write() {},
});

source.pipeTo(dest, { preventCancel: true }).catch((err) => {
  console.log("pipeTo rejected:", err.name, err.message);
});

setImmediate(() => {
  destController.error(new Error("destination errored"));
  sourceController.enqueue("chunk");
});
How often does it reproduce? Is there a required condition?

Always.

What is the expected behavior? Why is that the expected behavior?

pipeTo() should reject with the destination error, like v24.14.1 does:

pipeTo rejected: Error destination errored
What do you see instead?
node:internal/assert:11
    throw new ERR_INTERNAL_ASSERTION(message);
          ^

Error [ERR_INTERNAL_ASSERTION]: This is caused by either a bug in Node.js or incorrect usage of Node.js internals.
Please open an issue with this stack trace at https://github.com/nodejs/node/issues

    at assert (node:internal/assert:11:11)
    at writableStreamDefaultWriterWrite (node:internal/webstreams/writablestream:982:3)
    at node:internal/webstreams/readablestream:1677:33
    at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
  code: 'ERR_INTERNAL_ASSERTION'
}

Node.js v24.16.0
Additional information

The error starts to occur in v24.15.0. This lines up strongly with https://github.com/nodejs/node/pull/61800.

Vorherrschende Sprache
JavaScript
Sterne
122k
Forks
37.4k
Ø Merge
4 T. 3 Std.
Gemergte PRs (30 T.)
279

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus nodejs/node

Alle Issues in nodejs/node

Ähnliche Issues

Weitere Issues zu JavaScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.