reactor-core/src/main/java/reactor/core/publisher/Mono.java
public static <T1, T2> Mono<Tuple2<T1, T2>> zip(Mono<? extends T1> p1, Mono<? extends T2> p2) {
		return zip(p1, p2, Flux.tuple2Function());
	}
public static <T1, T2> Mono<Tuple2<T1, T2>> zip(Mono<? extends T1> p1, Mono<? extends T2> p2) {
		return zip(p1, p2, Flux.tuple2Function());
	}
Merge given monos into a new {@literal Mono} that will be fulfilled when all of the given {@literal Monos}
have produced an item, aggregating their values into a {@link Tuple2}.
An error or <strong>empty</strong> completion of any source will cause other sources
to be cancelled and the resulting Mono to immediately error or complete, respectively.

<p>
<img class="marble" src="doc-files/marbles/zipFixedSourcesForMono.svg" alt="">
<p>
@param p1 The first upstream {@link Publisher} to subscribe to.
@param p2 The second upstream {@link Publisher} to subscribe to.
@param <T1> type of the value from p1
@param <T2> type of the value from p2

@return a {@link Mono}.