reactor-core/src/main/java/reactor/core/publisher/Mono.java
public final Mono<T> retry(long numRetries, Predicate<? super Throwable> retryMatcher) {
		return defer(() -> retry(Flux.countingPredicate(retryMatcher, numRetries)));
	}
public final Mono<T> retry(long numRetries, Predicate<? super Throwable> retryMatcher) {
		return defer(() -> retry(Flux.countingPredicate(retryMatcher, numRetries)));
	}
Re-subscribes to this {@link Mono} sequence up to the specified number of retries if it signals any
error that match the given {@link Predicate}, otherwise push the error downstream.

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

@param numRetries the number of times to tolerate an error
@param retryMatcher the predicate to evaluate if retry should occur based on a given error signal

@return a {@link Mono} that retries on onError up to the specified number of retry
attempts, only if the predicate matches.