stream: fix sizeAlgorithm validation in WritableStream

Signed-off-by: Daeyeon Jeong <daeyeon.dev@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/57280
Fixes: https://github.com/nodejs/node/issues/57272
Refs: https://github.com/nodejs/node/pull/56067
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Minwoo Jung <nodecorelab@gmail.com>
Reviewed-By: Jason Zhang <xzha4350@gmail.com>
This commit is contained in:
Daeyeon Jeong 2025-03-05 12:04:39 +09:00 committed by GitHub
parent 345aa1f7c4
commit c566639026
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 32 additions and 1 deletions

View File

@ -1181,7 +1181,9 @@ function writableStreamDefaultControllerGetChunkSize(controller, chunk) {
sizeAlgorithm,
} = controller[kState];
if (sizeAlgorithm === undefined) {
assert(stream[kState].state === 'errored' || stream[kState].state === 'erroring');
assert(stream[kState].state === 'closed' ||
stream[kState].state === 'errored' ||
stream[kState].state === 'erroring');
return 1;
}

View File

@ -0,0 +1,29 @@
'use strict';
require('../common');
const { test } = require('node:test');
const assert = require('node:assert');
// https://github.com/nodejs/node/issues/57272
test('should throw error when writing after close', async (t) => {
const writable = new WritableStream({
write(chunk) {
console.log(chunk);
},
});
const writer = writable.getWriter();
await writer.write('Hello');
await writer.close();
await assert.rejects(
async () => {
await writer.write('World');
},
{
name: 'TypeError',
}
);
});