&gt; The absence of async callbacks not only makes the code cleaner<p>I agree async callbacks are not very pretty. However, neither is dealing with shared state between threads, or doing thread management in general. Personally I will take the ugly callbacks over buggy&#x2F;unsafe thread management any day.<p>&gt; The absence of async callbacks not only makes the code cleaner, but also means that when you&#x27;re debugging and hit a breakpoint, you can follow the call stack all the way back to the request entrypoint.<p>Look for the &quot;async call stack&quot; in the v8 debugging tools. This lets you follow async callbacks around like a normal call stack.<p>&gt; I&#x27;d rather state this as &quot;Needs Async Libraries&quot; as a con for Node.<p>Again, having a single-threaded run loop avoids entire classes of problems (like shared state), which is a huge plus in many cases.