code: @Override
  	public final <T, E extends Throwable> T execute(RetryCallback<T, E> retryCallback,
  			RecoveryCallback<T> recoveryCallback, RetryState retryState)
  			throws E, ExhaustedRetryException {
  		return doExecute(retryCallback, recoveryCallback, retryState);
  	}
docs: Execute the callback once if the policy dictates that we can, re-throwing any
  exception encountered so that clients can re-present the same task later.
  
  @see RetryOperations#execute(RetryCallback, RetryState)
  @param retryCallback the {@link RetryCallback}
  @param recoveryCallback the {@link RecoveryCallback}
  @param retryState the {@link RetryState}