Asunto de RxJava: escuche el tipo diferente que el que emite

He estado hurgando encadenando events Rx y estoy teniendo problemas para conseguir lo que quiero.

Básicamente, estoy solicitando un permiso de usuario, solicitando la location del usuario si se ha otorgado y luego solicitando datos de una API. El siguiente código es de un ViewModel y quiero que mi View (técnicamente un Fragment ) lo escuche. Mi problema con el siguiente código es que (obviamente), mi primer flatmap no se llama porque ningún evento inicial está activando mi Subject . He estado probando algunas variantes de este código pero no puedo encontrar la syntax correcta para lo que bash lograr.

Cualquier ayuda sería muy apreciada.

 var dataSubject = PublishSubject.create<Array<Data>>() fun getData() : Observable<Array<Data>> { dataSubject .flatMap { permissions.request(Manifest.permission.ACCESS_COARSE_LOCATION) } .flatMap { granted: Boolean -> if (granted) { locationProvider.lastKnownLocation } else { throw Error() } } .flatMap { location: Location -> dataRepository.getData(location.latitude, location.longitude) } return dataSubject }