reactor-core/src/main/java/reactor/core/publisher/Mono.java
public static <R> Mono<R> zip(final Iterable<? extends Mono<?>> monos, Function<? super Object[], ? extends R> combinator) {
		return onAssembly(new MonoZip<>(false, combinator, monos));
	}
public static <R> Mono<R> zip(final Iterable<? extends Mono<?>> monos, Function<? super Object[], ? extends R> combinator) {
		return onAssembly(new MonoZip<>(false, combinator, monos));
	}
Aggregate 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 according to the provided combinator function.
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/zipIterableSourcesForMono.svg" alt="">
<p>

@param monos The monos to use.
@param combinator the function to transform the combined array into an arbitrary
object.
@param <R> the combined result

@return a {@link Mono}.