Rx Java mergeDelayError não está funcionando conforme o esperado

Estou usando o RxJava no aplicativo Android com o RxAndroid. estou a usarmergeDelayError para combinar duas chamadas de rede com ajuste retroativo em uma observável que processará itens emitidos se um deles emitir um e o erro se houver um. Isso não está funcionando e só está disparando a ação onError quando um deles encontra um erro. Agora, para testar isso, mudei para um exemplo muito simples e ainda assim o successAction nunca é chamado quando tenho uma chamada onError. Veja o exemplo abaixo.

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

A ação de sucesso será chamada apenas se eu usar dois observáveis de sucesso. Estou faltando algo com como mergeDelayError deve funcionar?

EDITAR:

Descobri que se eu remover oobserveOn esubscribeOn tudo funciona como esperado. Eu preciso especificar threads e pensei que esse era o objetivo de usar o Rx. Alguma idéia de por que especificar essesSchedulers iria quebrar o comportamento?

questionAnswers(3)

yourAnswerToTheQuestion