No se llama a ninguno de los suscriptores de RxJava onNext / onError / onComplete al encadenar Observables creado desde Observable.create ()

Estoy tratando de implementar una llamada básica de RxJava encadenando

  1. Obtener el nombre de usuario y la foto de Facebook Graph API
  2. Use esa información para luego registrarse con mi service Backend

Así que bash usar flatMap como a continuación

getProfileFromFacebook().flatMap { user -> userRepository.createUser(user) } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { Log.d("test", "onNext") }, { Log.d("test", "onError") }, { Log.d("test", "onComplete") }) 

Extrañamente, ninguno de los inicios de session en el suscriptor se imprime.

Así que probé replace getProfleFromFacebook () con Observable.just (User ()). Esta vez funciona, en Siguiente se imprime. Así que supongo que el problema está en getProfleFromFacebook (). Aquí está su implementación

 fun getProfileFromFacebook(): Observable<User> { return Observable.create<User>({ emitter -> val request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken()) { _, _ -> emitter.onNext(User()) emitter.onCompleted() } val parameters = Bundle() parameters.putString("fields", "name,picture") request.parameters = parameters request.executeAsync() }, Emitter.BackpressureMode.BUFFER) } 

Lo he comprobado agregando más logging y descubrí que la function flatMap obtiene el evento con un object de usuario pero, por alguna razón, no parece que realmente ejecute el retorno Observable de userRepository.createUser ().

Si cambio la llamada Graph API de executeAsync () para ejecutarAndWait (), funciona. ¿Porqué es eso?

¿Qué podría hacer mal aquí?