code: public static <R>  Mono<R> zipDelayError(Function<? super Object[], ? extends R>
  			combinator, Mono<?>... monos) {
  		if (monos.length == 0) {
  			return empty();
  		}
  		if (monos.length == 1) {
  			return monos[0].map(d -> combinator.apply(new Object[]{d}));
  		}
  		return onAssembly(new MonoZip<>(true, combinator, monos));
  	}
docs: 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 according to
  the provided combinator function and delaying errors.
  If a Mono source completes without value, all other sources are run to completion then
  the resulting {@link Mono} completes empty.
  If several Monos error, their exceptions are combined (as suppressed exceptions on a root exception).
  
  <p>
  <img class="marble" src="doc-files/marbles/zipDelayErrorVarSourcesWithZipper.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 combined {@link Mono}.