code: public static <V> Supplier<V> retryable(Supplier<V> base,
                                            Class<? extends Throwable> exceptionClass,
                                            int maxRetries,
                                            int maxDelayBetweenRetries) {
      return () -> new RetryingFunction<>(v -> base.get(),
          exceptionClass,
          maxRetries,
          maxDelayBetweenRetries).apply(null);
    }
docs: Returns a Supplier that retries execution on failure.
  @param base base supplier
  @param exceptionClass type of exception for which to retry
  @param maxRetries max number of retries before giving up
  @param maxDelayBetweenRetries max delay between successive retries. The actual delay is randomly picked from
  the interval (0, maxDelayBetweenRetries]
  @return supplier
  @param <V> type of supplied result