docs: function pSeries (iterable, bail) {
    const result = []
    const iterableLength = iterable.length
  
    function noop (index, bail) {
      /**
       * End of promises
       */
      if (index >= iterableLength) {
        return Promise.resolve(result)
      }
  
      return iterable[index]
        .then((output) => {
          result.push(onResolved(output))
          return noop(index + 1, bail)
        })
        .catch((error) => {
          result.push(onRejected(error))
  
          /**
           *
           *  When bail is false, we continue after rejections
           *  too.
           */
          if (!bail) {
            return noop(index + 1, bail)
          }
  
          /**
           *  Otherwise we resolve the promise
           */
          return Promise.resolve(result)
        })
    }
  
    return noop(0, bail)
  }