From 92d6aa6ee35a7357cbb04224d13e736a7bacdd4e Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Sat, 13 Nov 2021 15:08:14 +0200 Subject: [PATCH 1/3] stream: add writableAborted --- lib/internal/streams/writable.js | 11 ++++++++ test/parallel/test-stream-writable-aborted.js | 25 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 test/parallel/test-stream-writable-aborted.js diff --git a/lib/internal/streams/writable.js b/lib/internal/streams/writable.js index 92e982e4821586..6275cee8b1e86b 100644 --- a/lib/internal/streams/writable.js +++ b/lib/internal/streams/writable.js @@ -860,6 +860,17 @@ ObjectDefineProperties(Writable.prototype, { return this._writableState ? this._writableState.errored : null; } }, + + writableAborted: { + enumerable: false, + get: function() { + return !!( + this._writableState.writable && + (this._writableState.destroyed || this._writableState.errored) && + !this._writableState.finished + ); + } + }, }); const destroy = destroyImpl.destroy; diff --git a/test/parallel/test-stream-writable-aborted.js b/test/parallel/test-stream-writable-aborted.js new file mode 100644 index 00000000000000..83f762e006eb7a --- /dev/null +++ b/test/parallel/test-stream-writable-aborted.js @@ -0,0 +1,25 @@ +'use strict'; + +const assert = require('assert'); +const { Writable } = require('stream'); + +{ + const writable = new Writable({ + write() { + } + }); + assert.strictEqual(writable.writableAborted, false); + writable.destroy(); + assert.strictEqual(writable.writableAborted, true); +} + +{ + const writable = new writable({ + read() { + } + }); + assert.strictEqual(writable.writableAborted, false); + writable.end(); + writable.destroy() + assert.strictEqual(writable.writableAborted, true); +} From c567585415392c87f7245fe8ccded9ff8988d27a Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Sat, 13 Nov 2021 16:13:08 +0200 Subject: [PATCH 2/3] fixup --- doc/api/stream.md | 12 ++++++++++++ lib/internal/streams/writable.js | 2 +- test/parallel/test-stream-writable-aborted.js | 5 +++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/doc/api/stream.md b/doc/api/stream.md index 66436eff9cb6d4..1e57793d41a325 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -596,6 +596,18 @@ added: v11.4.0 Is `true` if it is safe to call [`writable.write()`][stream-write], which means the stream has not been destroyed, errored or ended. +##### `writable.writableAborted` + + + +> Stability: 1 - Experimental + +* {boolean} + +Returns whether the stream was destroyed or errored before emitting `'finish'`. + ##### `writable.writableEnded`