A coroutine can be cancelled. You call a suspend function from it and a suspendableCancellableCoroutine allows you to make a suspend function out of a regular callback oriented api like a future... but I think you need an extra thing to actually register a handler for the cancellation that will delegate to the future's (or whatever's) cancellation mechanism