code: public static <T1, T2, R> Mono<R> zip(Mono<? extends T1> mono, Iterable<? extends T2> app,
              BiFunction<? super T1, ? super T2, ? extends R> fn) {
          return Mono.from(Future.of(mono.toFuture())
                                  .zip(app, fn));
      }
docs: Combine the provided Mono with the first element (if present) in the provided Iterable using the provided BiFunction
  
  @param mono Mono to combine with an Iterable
  @param app Iterable to combine with a Mono
  @param fn Combining function
  @return Combined Mono