1'use strict';
2
3const common = require('../common');
4const assert = require('assert');
5const { Transform } = require('stream');
6
7const t = new Transform({
8  objectMode: true, highWaterMark: 0,
9  transform(chunk, enc, callback) {
10    process.nextTick(() => callback(null, chunk, enc));
11  }
12});
13
14assert.strictEqual(t.write(1), false);
15t.on('drain', common.mustCall(() => {
16  assert.strictEqual(t.write(2), false);
17  t.end();
18}));
19
20t.once('readable', common.mustCall(() => {
21  assert.strictEqual(t.read(), 1);
22  setImmediate(common.mustCall(() => {
23    assert.strictEqual(t.read(), null);
24    t.once('readable', common.mustCall(() => {
25      assert.strictEqual(t.read(), 2);
26    }));
27  }));
28}));
29