docs: async function whichStream(config) {
    const {
      source,
      destination,
    } = config
    let { readable, writable } = config
  
    if (!(source || readable))
      throw new Error('Please give either a source or readable.')
    if (!(destination || writable))
      throw new Error('Please give either a destination or writable.')
  
    if (source && !readable) readable = createReadStream(source)
  
    if (destination == '-') {
      readable.pipe(process.stdout)
    } else if (destination) {
      await handleWriteStream(destination, readable, source)
    } else if (writable instanceof Writable) {
      readable.pipe(writable)
      await new Promise((r, j) => {
        writable.on('error', j)
        writable.on('finish', r)
      })
    }
  }