Kotlin coroutine не ждет, чтобы это было сделано

У меня есть старый проект, где я хочу использовать сопрограммы при обращении к бэкэнду. Бэкэнд был обработан sdk, поставляемым Hybris. Например, он использует залп и некоторые обратные вызовы. Я хочу, чтобы эти обратные вызовы сопроводили сопрограммой. Но проблема заключается в том, что сопрограмма не ждет, чтобы ее выполнили, она запускает сопрограмму и продолжает идти к следующим строкам, а метод возвращает значение, и вскоре после этого завершается сопрограмма. Мой код:

suspend fun ServiceHelper.getList(): ListOfWishes { return suspendCancellableCoroutine { continuation -> getAllLists(object : ResponseReceiver<ListOfWishes> { override fun onResponse(response: Response<ListOfWishes>?) { continuation.resume(response?.data!!) } override fun onError(response: Response<ErrorList>?) { val throwable = Throwable(Util.getFirstErrorSafe(response?.data)) continuation.resumeWithException(throwable) } }, RequestUtils.generateUniqueRequestId(), false, null, object : OnRequestListener { override fun beforeRequest() {} override fun afterRequestBeforeResponse() {} override fun afterRequest(isDataSynced: Boolean) {} }) } } 

Вспомогательный метод:

 suspend fun ServiceHelper.wishLists(): Deferred<ListOfWishes> { return async(CommonPool){ getWishList() } } 

И где называется сопрограмма:

  fun getUpdatedLists(): ListOfWishes?{ val context = Injector.getContext() val serviceHelper = Util.getContentServiceHelper(context) var list = ListOfWishLists() launch(Android){ try { list = serviceHelper.wishLists().await() }catch (ex: Exception){ Timber.d("Error: $ex") } } return list 

Поэтому вместо ожидания serviceHelper.wishLists().await() завершен, он возвращает список. Я также попытался заставить метод вернуть runBlocking{} , но это только блокирует поток пользовательского интерфейса и не runBlocking{} сопрограмму.