diff --git a/lib/_stream_duplex.js b/lib/_stream_duplex.js index 288b8b538c3219..59ce83292789b5 100644 --- a/lib/_stream_duplex.js +++ b/lib/_stream_duplex.js @@ -58,10 +58,10 @@ function Duplex(options) { this.writable = false; this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) + if (options && options.allowHalfOpen === false) { this.allowHalfOpen = false; - - this.once('end', onend); + this.once('end', onend); + } } Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { @@ -96,9 +96,8 @@ Object.defineProperty(Duplex.prototype, 'writableLength', { // the no-half-open enforcer function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) + // If the writable side ended, then we're ok. + if (this._writableState.ended) return; // no more data can be written. diff --git a/test/parallel/test-stream-duplex.js b/test/parallel/test-stream-duplex.js index 1cc54db05206a3..2b2f9a9a0e6265 100644 --- a/test/parallel/test-stream-duplex.js +++ b/test/parallel/test-stream-duplex.js @@ -29,6 +29,8 @@ const stream = new Duplex({ objectMode: true }); assert(Duplex() instanceof Duplex); assert(stream._readableState.objectMode); assert(stream._writableState.objectMode); +assert(stream.allowHalfOpen); +assert.strictEqual(stream.listenerCount('end'), 0); let written; let read;