reactor-core/src/main/java/reactor/core/publisher/Mono.java
@SuppressWarnings({ "unchecked", "rawtypes" })
	public static <T1, T2> Mono<Tuple2<T1, T2>> zipDelayError(Mono<? extends T1> p1, Mono<? extends T2> p2) {
		return onAssembly(new MonoZip(true, a -> Tuples.fromArray((Object[])a), p1, p2));
	}
@SuppressWarnings({ "unchecked", "rawtypes" })
	public static <T1, T2> Mono<Tuple2<T1, T2>> zipDelayError(Mono<? extends T1> p1, Mono<? extends T2> p2) {
		return onAssembly(new MonoZip(true, a -> Tuples.fromArray((Object[])a), p1, p2));
	}
@ SuppressWarnings ( { "unchecked" , "rawtypes" } ) public static < T1 , T2 > Mono < Tuple2 < T1 , T2 > > zipDelayError ( Mono < ? extends T1 > p1 , Mono < ? extends T2 > p2 ) { return onAssembly ( new MonoZip ( true , a -> Tuples . fromArray ( ( Object [ ] ) a ) , p1 , p2 ) ) ; }
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} and delaying errors.
If a Mono source completes without value, the other source is run to completion then the
resulting {@link Mono} completes empty.
If both Monos error, the two exceptions are combined (as suppressed exceptions on a root exception).

<p>
<img class="marble" src="doc-files/marbles/zipDelayErrorFixedSources.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}.
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 } and delaying errors . If a Mono source completes without value the other source is run to completion then the resulting { @link Mono } completes empty . If both Monos error the two exceptions are combined ( as suppressed exceptions on a root exception ) .