One thing that has puzzled me about coroutines is that they're co-operative...you check a flag in your coroutine to see if you should abort early. So if you have a long running CPU intensive coroutine, you can hog resources by ignoring the cancel flag. I don't remember this being the case w/ C# coroutines.
I think in Rx, if you unsubscribe, the thread is killed off, isn't it? At least it seems to interrupt Retrofit calls fairly well 🙂