public static <T, R> Supplier<R> andThen(Supplier<T> supplier, Function<T, R> resultHandler) {
        return () -> resultHandler.apply(supplier.get());
    }
@Test
    public void shouldChainSupplierAndRecoverWithHandler() {
        Supplier<String> supplier = () -> {
            throw new RuntimeException("BAM!");
        };
        Supplier<String> supplierWithRecovery = SupplierUtils
            .andThen(supplier, (result, ex) -> "Bla");

        String result = supplierWithRecovery.get();

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