@Test
@Ignore("Observers can't throw")
public void onErrorFailureSafe() {

    try {
        new SafeObserver<String>(OBSERVER_ONERROR_FAIL()).onError(new SafeObserverTestException("error!"));
        fail("expects exception to be thrown");
    } catch (Exception e) {
        e.printStackTrace();
        assertTrue(e instanceof RuntimeException);
        assertEquals("Error occurred when trying to propagate error to Observer.onError", e.getMessage());
        Throwable e2 = e.getCause();
        assertTrue(e2 instanceof CompositeException);
        List<Throwable> innerExceptions = ((CompositeException) e2).getExceptions();
        assertEquals(2, innerExceptions.size());
        Throwable e3 = innerExceptions.get(0);
        assertTrue(e3 instanceof SafeObserverTestException);
        assertEquals("error!", e3.getMessage());
        Throwable e4 = innerExceptions.get(1);
        assertTrue(e4 instanceof SafeObserverTestException);
        assertEquals("onErrorFail", e4.getMessage());
    }
}