/** * Executes the {@code supplier} asynchronously until the resulting future is successfully completed or the configured * policies are exceeded. This method is intended for integration with asynchronous code. Retries must be manually * scheduled via one of the {@code AsyncExecution.retry} methods. * <p> * If a configured circuit breaker is open, the resulting future is completed exceptionally with {@link * CircuitBreakerOpenException}. * * @throws NullPointerException if the {@code supplier} is null * @throws RejectedExecutionException if the {@code supplier} cannot be scheduled for execution */ public <T extends R> CompletableFuture<T> getStageAsyncExecution( AsyncSupplier<? extends CompletionStage<T>> supplier) { return callAsync(execution -> Functions.asyncOfFutureExecution(supplier, execution), true); }