TransformStreamのなぞ

こんなコードを書いたのだけど……

var stream = require('stream'),
    util = require('util');

function s(options) {
  options || (options = {});
  stream.Transform.call(this, options);
}

util.inherits(s, stream.Transform);

s.prototype._transform = function(chunk, encoding, callback) {
  this.push(chunk.toString(encoding));
  callback(null);
};

var ss = new s;

ss.on('error', function(err) {
  console.error(err);
});
ss.on('readable', function() {
  var data;

  while ((data = ss.read(1)) !== null) {
    console.log('---' + data);
    lines.push(data);
  }
});
ss.on('end', function() {
  console.log('end');
});

ss.write('', function() {console.log('write: 1');});
ss.write('', function() {console.log('write: 2');});
ss.write('', function() {console.log('write: 3');});
ss.end();
$ node index.js
write: 1
write: 2
write: 3
end

空文字をwriteしても無視される?

$ node index.js
---
write: 1
---
write: 2
---
write: 3
end

というのを期待してたのだけど……
1文字以上指定するとちゃんとそうなるのだけど。
stream2よくわからんなあ……