Мне нужно отправить задачу в структуру async, над которой я работаю, но мне нужно поймать исключения и повторить одну и ту же задачу несколько раз до "прерывания".
Код, с которым я работаю, это:
int retries = 0;
public CompletableFuture<Result> executeActionAsync() {
    // Execute the action async and get the future
    CompletableFuture<Result> f = executeMycustomActionHere();
    // If the future completes with exception:
    f.exceptionally(ex -> {
        retries++; // Increment the retry count
        if (retries < MAX_RETRIES)
            return executeActionAsync();  // <--- Submit one more time
        // Abort with a null value
        return null;
    });
    // Return the future    
    return f;
}
В настоящее время это не компилируется, потому что тип возврата лямбда неверен: он ожидает Result, но executeActionAsync возвращает a CompletableFuture<Result>.
Как я могу реализовать эту полностью асинхронную логику повтора?
