diff --git a/lib/_stream_transform.js b/lib/_stream_transform.js index 63f65f34ce41f9..1aa423fffa75fe 100644 --- a/lib/_stream_transform.js +++ b/lib/_stream_transform.js @@ -88,8 +88,10 @@ function afterTransform(stream, er, data) { var cb = ts.writecb; - if (!cb) - return stream.emit('error', new Error('no writecb in Transform class')); + if (!cb) { + return stream.emit('error', + new Error('write callback called multiple times')); + } ts.writechunk = null; ts.writecb = null; diff --git a/test/parallel/test-stream-transform-callback-twice.js b/test/parallel/test-stream-transform-callback-twice.js new file mode 100644 index 00000000000000..31a4aea29e5f65 --- /dev/null +++ b/test/parallel/test-stream-transform-callback-twice.js @@ -0,0 +1,14 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const { Transform } = require('stream'); +const stream = new Transform({ + transform(chunk, enc, cb) { cb(); cb(); } +}); + +stream.on('error', common.mustCall((err) => { + assert.strictEqual(err.toString(), + 'Error: write callback called multiple times'); +})); + +stream.write('foo');