reactor-core/src/main/java/reactor/core/publisher/Flux.java
public final <T2, V> Flux<V> zipWith(Publisher<? extends T2> source2,
			final BiFunction<? super T, ? super T2, ? extends V> combinator) {
		if (this instanceof FluxZip) {
			@SuppressWarnings("unchecked")
			FluxZip<T, V> o = (FluxZip<T, V>) this;
			Flux<V> result = o.zipAdditionalSource(source2, combinator);
			if (result != null) {
				return result;
			}
		}
		return zip(this, source2, combinator);
	}
public final <T2, V> Flux<V> zipWith(Publisher<? extends T2> source2,
			final BiFunction<? super T, ? super T2, ? extends V> combinator) {
		if (this instanceof FluxZip) {
			@SuppressWarnings("unchecked")
			FluxZip<T, V> o = (FluxZip<T, V>) this;
			Flux<V> result = o.zipAdditionalSource(source2, combinator);
			if (result != null) {
				return result;
			}
		}
		return zip(this, source2, combinator);
	}
Zip this {@link Flux} with another {@link Publisher} source, that is to say wait
for both to emit one element and combine these elements using a {@code combinator}
{@link BiFunction}
The operator will continue doing so until any of the sources completes.
Errors will immediately be forwarded.
This "Step-Merge" processing is especially useful in Scatter-Gather scenarios.
<p>
<img class="marble" src="doc-files/marbles/zipWithOtherUsingZipperForFlux.svg" alt="">

@param source2 The second source {@link Publisher} to zip with this {@link Flux}.
@param combinator The aggregate function that will receive a unique value from each
source and return the value to signal downstream
@param <T2> type of the value from source2
@param <V> The produced output after transformation by the combinator

@return a zipped {@link Flux}