Каков правильный способ использования расширений Anko Coroutines?

Поэтому я переношу пример приложения из RxJava в Kotlin / Anko Corontines, и мне интересно, если я делаю лучший (первый) подход к нему:

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) } } } 

Я использую MVP-архитектуру, где у моего базового класса Presenter была CompositeSubscription а в onDestroy или методе onDestroy – простая отмена подписки и очистка объекта CompositeSubscription . Но мне интересно, asReference() функция asReference() из Anko Coroutines одинаковой, и нет необходимости сохранять список Deferred<T> а затем перебирать их и отменить один за другим.

BTW, если я добавлю Thread.sleep(5000) чтобы имитировать большую транзакцию и уничтожить Фрагмент, я вижу в logcat ответ HTTP даже после того, как фрагмент не виден / уничтожен, а RxJava не происходит, поэтому я думаю, что я я неправильно использую.