/** * Performs potentially asynchronous post-execution handling for a {@code result}. */ protected CompletableFuture<ExecutionResult> postExecuteAsync(ExecutionResult result, Scheduler scheduler, FailsafeFuture<Object> future) { if (isFailure(result)) { result = result.with(false, false); return onFailureAsync(result, scheduler, future).whenComplete((postResult, error) -> { callFailureListener(postResult); }); } else { result = result.with(true, true); onSuccess(result); callSuccessListener(result); return CompletableFuture.completedFuture(result); } }
/** * Performs synchronous post-execution handling for a {@code result}. */ protected ExecutionResult postExecute(ExecutionResult result) { if (isFailure(result)) { result = onFailure(result.with(false, false)); callFailureListener(result); } else { result = result.with(true, true); onSuccess(result); callSuccessListener(result); } return result; }
retriesExceededListener.handle(result, execution); return result.with(waitNanos, completed, success);