What is nice about these lightweight thread multiplexing languages and runtimes is that you don't have to write your apps in the butt-ugly continuation passing style (doSomething("foo", function(result, err) { print(result); }). This is something that the compiler and runtime can do for you in Go/Haskell/Erlang/etc where using a blocking system call will effectively do the same, but it's automatically done, not by the programmer.
Of course you can get the same effect with Node.js/Boost.asio, but I find it a bit clumsy.
Of course you can get the same effect with Node.js/Boost.asio, but I find it a bit clumsy.