public final <T2> Mono<Tuple2<T, T2>> zipWhen(Function<T, Mono<? extends T2>> rightGenerator) {
    """
	Wait for the result from this mono, use it to create a second mono via the
	provided {@code rightGenerator} function and combine both results into a {@link Tuple2}.
	
	<p>
	<img class="marble" src="doc-files/marbles/zipWhenForMono.svg" alt="">
	
	@param rightGenerator the {@link Function} to generate a {@code Mono} to combine with
	@param <T2> the element type of the other Mono instance
	
	@return a new combined Mono
    """
		return zipWhen(rightGenerator, Tuples::of);
	}
public final <T2> Mono<Tuple2<T, T2>> zipWhen(Function<T, Mono<? extends T2>> rightGenerator) {
		return zipWhen(rightGenerator, Tuples::of);
	}
public final < T2 > Mono < Tuple2 < T , T2 > > zipWhen ( Function < T , Mono < ? extends T2 > > rightGenerator ) { return zipWhen ( rightGenerator , Tuples :: of ) ; }
Wait for the result from this mono, use it to create a second mono via the
provided {@code rightGenerator} function and combine both results into a {@link Tuple2}.

<p>
<img class="marble" src="doc-files/marbles/zipWhenForMono.svg" alt="">

@param rightGenerator the {@link Function} to generate a {@code Mono} to combine with
@param <T2> the element type of the other Mono instance

@return a new combined Mono
Wait for the result from this mono use it to create a second mono via the provided { @code rightGenerator } function and combine both results into a { @link Tuple2 } .