Cómo combinar el flatmap y el anterior Single

Hay un código de trabajo siguiente, que combina los resultados de .connect() y .auth() .

auth() depende del resultado de connect() . En total, es necesario combinar los resultados api y auth en el object Connection .

 fun getConnection(token: String): Single<Connection> { return connect() .map { Api(it) } .flatMap { api -> api.auth(token) .map { Connection(api, it) } } } 

En mi humilde opinión, este código está oliendo. ¿Puede ser que tenga una solución más óptima para get Connection sin un mapeo interno en rxjava2?