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?