¿Cuál es la forma correcta de usar las extensiones de Anko Coroutines?

Así que estoy migrando una aplicación de ejemplo de RxJava a Kotlin / Anko Corountines y me pregunto si estoy haciendo el mejor (primero) enfoque de la misma:

fun getPopulationList() { val ref = asReference() async(UI) { try { ref().setCurrentState(ViewState.State.LOADING) val background = bg { repository.populationResponse().execute().body() } ref().let { it.response = background.await() it.mvpView?.onGetData(it.response) it.setCurrentState(ViewState.State.FINISH) } } catch (e: Exception) { e.printStackTrace() ref().mvpView?.onError(e) } } } 

Estoy usando una architecture MVP en la que mi class base del Presenter tiene una onDestroy CompositeSubscription y en el fragment o el método de actividad de onDestroy , simplemente anule la suscripción y elimine el object CompositeSubscription . Pero me pregunto si la function asReference() de Anko Coroutines hace lo mismo y no hay necesidad de save una list de Defernetworking<T> y luego iterar y cancelar uno por uno.

Por cierto, si agrego un Thread.sleep(5000) para simular una gran transacción y destruir el Fragment, puedo ver en el logcat la respuesta HTTP incluso después de que el fragment no sea visible / destruido mientras que con RxJava no ocurre, entonces creo que no estoy usando apropiadamente