@Test
public void testMapResumeAsyncNext() {

    Subscription sr = mock(Subscription.class);
    // Trigger multiple failures
    Observable<String> w = Observable.from("one", "fail", "two", "three", "fail");
    // Resume Observable is async
    TestObservable f = new TestObservable(sr, "twoResume", "threeResume");
    Observable<String> resume = Observable.create(f);
    // Introduce map function that fails intermittently (Map does not prevent this when the observer is a
    //  rx.operator incl onErrorResumeNextViaObservable)
    w = w.map(new Func1<String, String>() {
        public String call(String s) {
            if ("fail".equals(s))
                throw new RuntimeException("Forced Failure");
            System.out.println("BadMapper:" + s);
            return s;
        }
    });
    Observable<String> observable = Observable.create(onErrorResumeNextViaObservable(w, resume));
    @SuppressWarnings("unchecked")
    Observer<String> observer = mock(Observer.class);
    observable.subscribe(observer);
    try {
        f.t.join();
    } catch (InterruptedException e) {
        fail(e.getMessage());
    }
    verify(observer, Mockito.never()).onError(any(Throwable.class));
    verify(observer, times(1)).onCompleted();
    verify(observer, times(1)).onNext("one");
    verify(observer, Mockito.never()).onNext("two");
    verify(observer, Mockito.never()).onNext("three");
    verify(observer, times(1)).onNext("twoResume");
    verify(observer, times(1)).onNext("threeResume");
}