diff --git a/doc/api/stream.md b/doc/api/stream.md index cefaa6b5ba084e..84aff85a68e4ed 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -1846,12 +1846,10 @@ added: REPLACEME * `options` {Object} * `signal` {AbortSignal} allows cancelling the toArray operation if the signal is aborted. -* Returns: {Promise} a promise containing an array (if the stream is in - object mode) or Buffer with the contents of the stream. +* Returns: {Promise} a promise containing an array with the contents of the + stream. -This method allows easily obtaining the contents of a stream. If the -stream is in [object mode][object-mode] an array of its contents is returned. -If the stream is not in object mode a Buffer containing its data is returned. +This method allows easily obtaining the contents of a stream. As this method reads the entire stream into memory, it negates the benefits of streams. It's intended for interoperability and convenience, not as the primary diff --git a/lib/internal/streams/operators.js b/lib/internal/streams/operators.js index 1218942b6414e4..7a1e3cd3637e0d 100644 --- a/lib/internal/streams/operators.js +++ b/lib/internal/streams/operators.js @@ -1,7 +1,6 @@ 'use strict'; const { AbortController } = require('internal/abort_controller'); -const { Buffer } = require('buffer'); const { codes: { @@ -224,9 +223,6 @@ async function toArray(options) { } ArrayPrototypePush(result, val); } - if (!this.readableObjectMode) { - return Buffer.concat(result); - } return result; } diff --git a/test/parallel/test-stream-toArray.js b/test/parallel/test-stream-toArray.js index 4fcc77341fbcc8..85e21edf97e3e5 100644 --- a/test/parallel/test-stream-toArray.js +++ b/test/parallel/test-stream-toArray.js @@ -24,14 +24,16 @@ const assert = require('assert'); } { - // Works on a non-object-mode stream and flattens it + // Works on a non-object-mode stream (async () => { + const firstBuffer = Buffer.from([1, 2, 3]); + const secondBuffer = Buffer.from([4, 5, 6]); const stream = Readable.from( - [Buffer.from([1, 2, 3]), Buffer.from([4, 5, 6])] - , { objectMode: false }); + [firstBuffer, secondBuffer], + { objectMode: false }); const result = await stream.toArray(); - assert.strictEqual(Buffer.isBuffer(result), true); - assert.deepStrictEqual(Array.from(result), [1, 2, 3, 4, 5, 6]); + assert.strictEqual(Array.isArray(result), true); + assert.deepStrictEqual(result, [firstBuffer, secondBuffer]); })().then(common.mustCall()); }