Skip to content

Commit 90c12a2

Browse files
Renegade334RafaelGSS
authored andcommitted
stream: fix isErrored/isWritable for WritableStreams
PR-URL: #60905 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
1 parent 47b7cb4 commit 90c12a2

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

‎lib/internal/webstreams/writablestream.js‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ const {
7676

7777
const{
7878
kIsClosedPromise,
79+
kIsErrored,
80+
kIsWritable,
7981
kControllerErrorFunction,
8082
}=require('internal/streams/utils');
8183

@@ -183,6 +185,14 @@ class WritableStream {
183185
size);
184186
}
185187

188+
get[kIsErrored](){
189+
returnthis[kState].state==='errored';
190+
}
191+
192+
get[kIsWritable](){
193+
returnthis[kState].state==='writable';
194+
}
195+
186196
/**
187197
* @readonly
188198
* @type {boolean}

‎test/parallel/test-whatwg-writablestream.js‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
constcommon=require('../common');
55
constassert=require('assert');
66

7+
const{ isErrored, isWritable }=require('stream');
8+
79
const{
810
WritableStream,
911
WritableStreamDefaultController,
@@ -171,6 +173,27 @@ class Sink {
171173
}));
172174
}
173175

176+
{
177+
conststream=newWritableStream();
178+
assert.strictEqual(isWritable(stream),true);
179+
stream.close().then(common.mustCall(()=>{
180+
assert.strictEqual(isWritable(stream),false);
181+
}));
182+
}
183+
184+
{
185+
conststream=newWritableStream({
186+
write: common.mustCall((chunk,controller)=>{
187+
controller.error(newError());
188+
})
189+
});
190+
constwriter=stream.getWriter();
191+
assert.strictEqual(isErrored(stream),false);
192+
writer.write().then(common.mustCall(()=>{
193+
assert.strictEqual(isErrored(stream),true);
194+
}));
195+
}
196+
174197
{
175198
assert.throws(()=>Reflect.get(WritableStream.prototype,'locked',{}),{
176199
code: 'ERR_INVALID_THIS',

0 commit comments

Comments
 (0)