code: public static <U, V> Function<U, V> retryable(Function<U, V> base,
                                                  Class<? extends Throwable> exceptionClass,
                                                  int maxRetries,
                                                  int maxDelayBetweenRetries) {
      return new RetryingFunction<>(base, exceptionClass, maxRetries, maxDelayBetweenRetries);
    }
docs: Returns a function that retries execution on failure.
  @param base base function
  @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 function
  @param <U> type of function input
  @param <V> type of function output