reactor-core/src/main/java/reactor/core/publisher/Mono.java
public final Mono<T> retryWhen(Function<Flux<Throwable>, ? extends Publisher<?>> whenFactory) {
		return onAssembly(new MonoRetryWhen<>(this, whenFactory));
	}
public final Mono<T> retryWhen(Function<Flux<Throwable>, ? extends Publisher<?>> whenFactory) {
		return onAssembly(new MonoRetryWhen<>(this, whenFactory));
	}
Retries this {@link Mono} when a companion sequence signals
an item in response to this {@link Mono} error signal
<p>If the companion sequence signals when the {@link Mono} is active, the retry
attempt is suppressed and any terminal signal will terminate the {@link Mono} source with the same signal
immediately.

<p>
<img class="marble" src="doc-files/marbles/retryWhenForMono.svg" alt="">
<p>
Note that if the companion {@link Publisher} created by the {@code whenFactory}
emits {@link Context} as trigger objects, the content of these Context will be added
to the operator's own {@link Context}.

@param whenFactory the {@link Function} that returns the associated {@link Publisher}
companion, given a {@link Flux} that signals each onError as a {@link Throwable}.

@return a {@link Mono} that retries on onError when the companion {@link Publisher} produces an
onNext signal