code: function validChunk(stream, state, chunk, cb) {
    var valid = true;
    if (!util.isBuffer(chunk) &&
        !util.isString(chunk) &&
        !util.isNullOrUndefined(chunk) &&
        !state.objectMode) {
      var er = new TypeError('Invalid non-string/buffer chunk');
      stream.emit('error', er);
      process.nextTick(function() {
        cb(er);
      });
      valid = false;
    }
    return valid;
  }
docs: If we get something that is not a buffer, string, null, or undefined, and we're not in objectMode, then that's an error. Otherwise stream chunks are all considered to be of length=1, and the watermarks determine how many objects to keep in the buffer, rather than how many bytes or characters.