public static RuntimeException peel(final Throwable t) {
        return (RuntimeException) peel(t, null, null, HAZELCAST_EXCEPTION_WRAPPER);
    }
@Test
    public void testPeel_whenThrowableIsExecutionExceptionWithCustomFactory_thenReturnCustomException() {
        IOException expectedException = new IOException();
        RuntimeException result = (RuntimeException) ExceptionUtil.peel(new ExecutionException(expectedException),
                null, null, (throwable, message) -> new IllegalStateException(message, throwable));

        assertEquals(IllegalStateException.class, result.getClass());
        assertEquals(result.getCause(), expectedException);
    }