¿Cómo puedo agregar de manera condicional una operación asincrónica en medio de una transmisión de RxJava?

Aquí hay una versión simplificada de lo que bash hacer (usando Kotlin y RxJava)

makeServerCall() .doOnNext { doStuff(it) } //TODO: if it == 0, call asyncOperation() and wait for its callback to fire //before running the rest of the stream. Otherwise immediately run the rest //of the stream .flatMap { observable1(it) observable2(it) Observable.merge( getSpotSearchObservable(observable1), getSpotSearchObservable(observable2) } .subscribeBy(onNext = { allDone() view? }) 

¿Cómo aprieto la llamada a asyncOperation() y hago que el rest de la transmisión espere a que se asyncOperation() su callback, pero solo cuando se cumple una determinada condición? Parece que es probablemente una operación trivial en Rx, pero no viene a la mente ninguna solución obvia.