If you want to block the calling thread while the suspending function is suspended, you can use runBlocking { }
coroutine builder.
I believe, no, we shouldn’t. There are a lot of non-suspending functions, and prohibiting to invoke them from suspending functions just because some of them can block seems too restricting.
But this rule should be enforced for all Java invocations.
I really don’t get where does this rule follow from. Does rewriting a blocking function from java to kotlin makes it magically non-blocking?