diff --git a/lib/internal/streams/transform.js b/lib/internal/streams/transform.js index 26e0b07c2956c8..cbd23185fad291 100644 --- a/lib/internal/streams/transform.js +++ b/lib/internal/streams/transform.js @@ -196,6 +196,7 @@ Transform.prototype._write = function(chunk, encoding, callback) { wState.ended || // Backwards compat. length === rState.length || // Backwards compat. rState.length < rState.highWaterMark || + rState.highWaterMark === 0 || rState.length === 0 ) { callback(); diff --git a/test/parallel/test-stream-passthrough-drain.js b/test/parallel/test-stream-passthrough-drain.js new file mode 100644 index 00000000000000..f5c98947e21e2e --- /dev/null +++ b/test/parallel/test-stream-passthrough-drain.js @@ -0,0 +1,8 @@ +'use strict'; +const common = require('../common'); +const { PassThrough } = require('stream'); + +const pt = new PassThrough({ highWaterMark: 0 }); +pt.on('drain', common.mustCall()); +pt.write('hello'); +pt.read();