    @Test(expected = IOException.class)
    public void executeAndPropagateAsIs_should_leave_original_exception_unwrapped() throws IOException
    {

        RetryExecutor retryExc = retryExecutorBuilder().withRetryLimit(3).build();
        // An explicit type parameter for operation return type is needed here,
        // Without one, javac (at least on 1.8) will fails to infer the X exception type parameter.
        new DefaultRetryable<Object>() {
            @Override
            public Object call() throws IOException
            {
                throw new IOException();
            }
        }.executeWithCheckedException(retryExc, IOException.class);
    }