code: public <A, B, C, ERR> OrFuture<Tuple3<A, B, C>, Every<ERR>>
    zip3(OrFuture<? extends A, ? extends Every<? extends ERR>> a,
         OrFuture<? extends B, ? extends Every<? extends ERR>> b,
         OrFuture<? extends C, ? extends Every<? extends ERR>> c) {
      return withGood(a, b, c, Tuple::of);
    }
docs: Zips three accumulating OrFutures together. If all complete with Goods, returns an OrFuture
  that completes with a Good tuple containing all original Good values. Otherwise returns an
  OrFuture that completes with a Bad containing every error message.
  
  @param <A>   the success type
  @param <B>   the success type
  @param <C>   the success type
  @param <ERR> the error type of the accumulating OrFutures
  @param a     the first OrFuture to zip
  @param b     the second OrFuture to zip
  @param c     the third OrFuture to zip
  @return an OrFuture that completes with a Good of type Tuple3 if all OrFutures completed
  with Goods, otherwise returns an OrFuture that completes with a Bad containing every error.