code: function onerror(er) {
      debug('onerror', er);
      unpipe();
      dest.removeListener('error', onerror);
      if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
    }
docs: if the dest has an error, then stop piping into it. however, don't suppress the throwing behavior for this.