Skip to content

.pipe() and .pipeTo() fail when the source stream is constructed from a Buffer #56297

Closed
@gabrielschulhof

Description

@gabrielschulhof

Version

v22.9.0, v23.4.0

Platform

Darwin XXXXXXXXXX 24.2.0 Darwin Kernel Version 24.2.0: Fri Dec  6 19:01:59 PST 2024; root:xnu-11215.61.5~2/RELEASE_ARM64_T6000 arm64

Subsystem

stream

What steps will reproduce the bug?

const path = require('node:path');
const fs = require('node:fs');
const { Readable, Writable } = require('node:stream');

const fileBuffer = fs.readFileSync(__filename);
const readable = fs.createReadStream(path.resolve(__filename));
const writable = fs.createWriteStream(`${__filename}_copy`);
const webReadable = Readable.toWeb(readable);
const webWritable = Writable.toWeb(writable);
const webReadableFromBuffer = ReadableStream.from(fileBuffer);
const readableFromBuffer = Readable.from(fileBuffer);
const readableFromWebReadableFromBuffer = Readable.from(webReadableFromBuffer);
const readableFromWebReadableFromReadable = Readable.from(webReadable);

// readable.pipe(writable);
// OK

// readableFromBuffer.pipe(writable);
// OK

// readableFromWebReadableFromReadable.pipe(writable);
// OK

// webReadable.pipeTo(webWritable);
// TypeError [ERR_INVALID_STATE]: Invalid state: The ReadableStream is locked

// webReadableFromBuffer.pipeTo(webWritable);
// TypeError [ERR_INVALID_STATE]: Invalid state: The ReadableStream is locked

// readableFromWebReadableFromBuffer.pipe(writable);
// TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received type number (60)

How often does it reproduce? Is there a required condition?

Every time. No preconditions.

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

All the above combinations should succeed.

What do you see instead?

Errors in the cases where the Readable or ReadableStream is constructed from a Buffer.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    streamIssues and PRs related to the stream subsystem.web streams

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions