docs: public static <T1, T2, R> CompletableFuture<R> zip(final Publisher<? extends T2> p, final CompletableFuture<? extends T1> f,
              final BiFunction<? super T1, ? super T2, ? extends R> fn) {
          return narrow(Future.of(f)
                               .zip(fn, p)
                               .getFuture());
      }