continuation passing style.
There is no direct support for this in JS/LLVM/JVM. What you will get in existing debug tools for them is tree of defferred state machine objects on heap somehow referencing outside state and pushing continuations to factory provided executors. Tomcat/android/browser framework and library threading and state will still be in process, it will be the mess in case of any non trivial usage outside of basic async/await. The only current way provided to understand whats actually happening is Thread.setName called on continuation resume. This is just not sufficient.
GO is self contained environment with optimizing compiler, complex implementation of threading and memory management, kotlin is language for JVM/Android/JS/LLVM. The topic question is not about golang channels/CSP at all, but support tools and guides on using kotlin “suspend” continuation generators in practice. This includes not only channels but async/await, actors. yields and such.
My main point is this kind of tools are not just nice to have, they are actual necessity even for non distributed cases:
