That is, a bit like TFA, a tad too high-level for what I was hoping to find here.
What's immensely mentally blocking me is how such high-level, admittedly elegant solutions translate down. Async code writes naturally in JS/Node.js, great; but it's imperative code on the lower levels, assembly even. The article mainly defers to libuv. But how does it work?
Add to that the different concurrency models. Some runtimes are async and multithreaded (.NET, don't know about JVM, ...), some are single-threaded async (Python, I guess Node.js as well, ...). Some are native code async, which can be either single- or multithreaded (Rust).
I'm aware of coroutines and how they do cooperative multitasking, green threads, native threads, ...
A large, complex landscape that I have been trying to grok and fit into a unified mental model, but I am slowly losing hope that's even possible. Things seem too heterogeneous.
If anyone knows a good resource (preferably book) on this topic, I'd love to hear about it.