Mapear exceções em um futuro completável para um tipo de exceção diferente?

Estou usando o futuro completo do java 8 e gostaria de poder fazer uma exceção lançada pelo futuro e transformá-la em uma exceção diferente.

Todo o material composto que tentei parece ter um curto-circuito quando ocorre uma exceção.

Usando um futuro da Scala, por exemplo, eu posso fazer algo assim:

scala.concurrent.Future<Object> translatedException = ask.recover(new Recover<Object>() {
            @Override public Object recover(final Throwable failure) throws Throwable {
                if (failure instanceof AskTimeoutException) {
                    throw new ApiException(failure);
                }

                throw failure;
            }
        }, actorSystem.dispatcher());

e eu gostaria de imitar isso em um futuro bloco composto em java. Isso é possível?