code: function pipeP(...fns) {
    if(!arguments.length) {
      throw new TypeError(err)
    }
  
    const head =
      fns[0]
  
    if(!isFunction(head)) {
      throw new TypeError(err)
    }
  
    const tail =
      fns.slice(1).concat(x => x)
  
    return tail.reduce(applyPipe, head)
  }
docs: pipeP : Promise p => ((a -> p b), (b -> p c), ..., (y -> p z)) -> a -> p z