@Deprecated
  public static <T> ComposableFuture<T> retry(final int retries, final long duration, final TimeUnit unit,
                                              final FutureAction<T> action) {
    return action.execute().withTimeout(duration, unit).recoverWith(error -> {
      if (retries < 1) {
        return ComposableFutures.fromError(error);
      }

      return retry(retries - 1, action);
    });
  }
@ Deprecated public static < T > ComposableFuture < T > retry ( final int retries , final long duration , final TimeUnit unit , final FutureAction < T > action ) { return action . execute ( ) . withTimeout ( duration , unit ) . recoverWith ( error -> { if ( retries < 1 ) { return ComposableFutures . fromError ( error ) ; } return retry ( retries - 1 , action ) ; } ) ; }
reties an eager future on failure "retries" times. each try is time capped with the specified time limit.

@param retries  max amount of retries
@param duration the max time duration allowed for each try
@param unit     the duration time unit
@param action   the eager future provider
@param <T>      the future type
@return the composed result.
@deprecated please define execution cap outside of retry context