Rx Java mergeDelayError no funciona como se esperaba

Estoy usando RxJava en y la aplicación de Android con RxAndroid. Estoy usandomergeDelayError combinar dos llamadas de red de ajuste retro en un observable que procesará los elementos emitidos si alguno emite uno y el error si alguno tiene uno. Esto no funciona y solo está activando la acción onError cuando cualquiera encuentra un error. Ahora, para probar esto, cambié a un ejemplo muy simple y todavía no se llama a successAction cuando tengo una llamada onError. Ver ejemplo a continuación.

Observable.mergeDelayError(
                Observable.error(new RuntimeException()),
                Observable.just("Hello")
            )
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .finallyDo(completeAction)
            .subscribe(successAction, errorAction);

La acción de éxito solo se llamará si utilizo dos observables de éxito. ¿Me estoy perdiendo algo sobre cómo se supone que funciona mergeDelayError?

EDITAR:

He descubierto que si elimino elobserveOn ysubscribeOn Todo funciona como se esperaba. Necesito especificar hilos y pensé que ese era el objetivo de usar Rx. Alguna idea de por qué especificar esosSchedulers rompería el comportamiento?

Respuestas a la pregunta(3)

Su respuesta a la pregunta