Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

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

Aberta
#63,732 2 comentários 1 reação 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
52/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
javascript, node.js
Domínio
backend

Direção de pesquisa

Execute a reprodução fornecida no v24.16.0 e compare-a com o v24.14.1. Inspecione node:internal/webstreams/writablestream na linha 982 e node:internal/webstreams/readablestream na linha 1677; em seguida, revise o PR #61800. A tarefa estará concluída quando um teste de regressão confirmar que preventCancel é rejeitado com o erro do destino em vez de ERR_INTERNAL_ASSERTION.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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.

Linguagem predominante
JavaScript
Estrelas
122k
Forks
37.4k
Merge médio
4d 3h
PRs com merge (30d)
279

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de nodejs/node

Todas as issues de nodejs/node

Issues semelhantes

Mais issues de JavaScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.