Hard disagree. It's much easier to reason about async await because you don't need to worry about preemption. You (generally) don't need mutexes or anything like that.
When do you have to worry about synchronization? You don't. Pull DB connection from pool, etc, done.
Async await has colored functions, promises, and other atrocities.
Even if I have some locking primitives somewhere I'll GLADLY take that over the fucking mess of async stack traces and code executed "next tick" with no trace.
search for "node" on this page: https://www.techempower.com/benchmarks/#section=data-r21
Node always loses. Every time. To everything. It reliably loses to Java, Python, and even other JavaScript engines. Which is why I asked... performant compared to what?