old_contents: 
  module.exports = function () {
    var _read, cbs = [], _end
  
    var read = function (end, cb) {
      if(!_read) {
        _end = end
        cbs.push(cb)
      } 
      else _read(end, cb)
    }
    read.resolve = function (read) {
      if(_read) throw new Error('already resolved')
      _read = read
      if(!_read) throw new Error('no read cannot resolve!' + _read)
      while(cbs.length)
        _read(_end, cbs.shift())
    }
    read.abort = function(err) {
      read.resolve(function (_, cb) {
        cb(err || true)
      })
    }
    return read
  }
  
  
new_contents: 
  module.exports = function () {
    var _read, _cb, abortCb, _end
  
    var read = function (end, cb) {
      if(!_read) {
        if(end) {
          _end = end
          abortCb = cb
        }
        else
          _cb = cb
      }
      else _read(end, cb)
    }
    read.resolve = function (read) {
      if(_read) throw new Error('already resolved')
      _read = read
      if(!_read) throw new Error('no read cannot resolve!' + _read)
      if(_cb) read(null, _cb)
      if(abortCb) read(_end, abortCb)
    }
    read.abort = function(err) {
      read.resolve(function (_, cb) {
        cb(err || true)
      })
    }
    return read
  }
  
  
subject: handle abort edge case correctly, including if there is both a read and an abort before the stream is connected, also, dont use an array, since there will only be 2 cbs max