> I don't understand, you can call a coroutine from a synchronous function and call a normal or suspend function from a suspending one.
Not without a syntactic distinction, and not without losing the performance characteristics you want coroutines to begin with.
> By colorless we mean that you can use a suspend return type directly and not through the ugliness of a promise.
That's not colourless. Colourless means that there is no syntactic distinction between sleep and delay. Two subroutines that mean the same but have a different syntactic colour.
> kotlin could have had no suspend keyword and be officially colorless,
It could not. You'd need to control the JDK to do that, or depend on class reloading, or pay a very high price in performance. Not to mention that it still wouldn't help when calling Java code (directly or indirectly) nor would it change how, say, JFR observes your program.
The problem is that Kotlin has very little influence over the platforms it targets -- Java, Android, JS and LLVM (well, maybe it has some influence over Android) -- and so must do its best to implement its functionality on top.
> I believe the best of both worlds
We don't want two worlds. We don't need two worlds. We want one that behaves as it should.