public static <T, R> Callable<R> andThen(Callable<T> callable, Function<T, R> resultHandler) {
        return () -> resultHandler.apply(callable.call());
    }
@Test
    public void shouldChainCallableAndRecoverWithErrorHandler() throws Exception {
        Callable<String> callable = () -> {
            throw new IOException("BAM!");
        };
        Callable<String> callableWithRecovery = CallableUtils
            .andThen(callable, (result) -> result, ex -> "Bla");

        String result = callableWithRecovery.call();

        assertThat(result).isEqualTo("Bla");
    }