Java8 CompletableFuture recoverWith equivalente? por exemplo, excepcionalmente, mas retorne CompletableFuture <U>

Não vejo uma maneira óbvia de lidar com uma exceção com um resultado assíncrono. Por exemplo, se eu quiser tentar novamente uma operação assíncrona. Eu esperaria algo assim, no entanto, handleAsync não faz o que você pensa que faz - ele executa os retornos de chamada em outro thread de forma assíncrona. Retornar um CompletionStage aqui não está correto. Questão de risco do dia:thenApply éthenCompose Comoexceptionally é o que?

CompletionStage<String> cf = askPong("cause error").handleAsync((x, t) -> {
    if (t != null) {
        return askPong("Ping");
    } else {
        return x;
    }
});

Onde askPong pergunta a um ator:

public CompletionStage<String> askPong(String message){
    Future sFuture = ask(actorRef, message, 1000);
    final CompletionStage<String> cs = toJava(sFuture);
    return cs;
} 

questionAnswers(2)

yourAnswerToTheQuestion