public static <T> CompletableFuture<T> retryWithDelay(
			final Supplier<CompletableFuture<T>> operation,
			final int retries,
			final Time retryDelay,
			final ScheduledExecutor scheduledExecutor) {
		return retryWithDelay(
			operation,
			retries,
			retryDelay,
			(throwable) -> true,
			scheduledExecutor);
	}
public static < T > CompletableFuture < T > retryWithDelay ( final Supplier < CompletableFuture < T > > operation , final int retries , final Time retryDelay , final ScheduledExecutor scheduledExecutor ) { return retryWithDelay ( operation , retries , retryDelay , ( throwable ) -> true , scheduledExecutor ) ; }
Retry the given operation with the given delay in between failures.

@param operation to retry
@param retries number of retries
@param retryDelay delay between retries
@param scheduledExecutor executor to be used for the retry operation
@param <T> type of the result
@return Future which retries the given operation a given amount of times and delays the retry in case of failures