1 min readMar 27, 2019
I highly recommend to consider a different signature for getData function that does not expose Deferred (future) type, but is built with suspend fun instead. Something like:
suspend fun getData(provider: () -> Data): DataYou can use it with the recent version of Retrofit that supports suspending functions like this:
suspend fun getData(): Data =
cacheProviders.getData { retrofitService.getData() }It is less error-prone, reduces the risk of accidentally leaking resources or loosing errors. It is also more convenient, since the consuming code does not have to use .await() .
