I don't find coroutines that helpful, but the syntax sugar and standard library in Kotlin is pretty awesome. The Elvis operator alone is worth the switch. Say you have some container with 3 levels of nesting. In Java, you have to null-check every level vs. 3 "?." dereferences.
In theory this is possible to approach with annotations but I found it hard to keep up in a large codebase.