class DummyClass() : CoroutineScope { override val coroutineContext: CoroutineContext get() = dispatcher fun execute(suspendFunc: suspend () -> Unit) { launch { suspendFunc() } } fun request( parameter: String, callback: (MyResponse?, Throwable?) -> Unit ) { execute { try { val result = httpClient.get { url("PUT A URL HERE") } callback(result, null) } catch (e: Throwable) { callback(null, e) } finally { executor.cancel() } } } }