- Yes, built-in async support is very important
- Everyone has to write JS at some point anyways -- it helps to take advantage of what everyone already knows
- You can easily share code between the client and the server
- There are tons of modules available on NPM already
- The compile-to-JS languages are getting more practical every day, and you can integrate them with existing JS code
If you consider time spent learning a platform compared to what you get out of it, Node.js is probably the best bang for your buck today.
It also helps that tools like Grunt are Node based, causing frontend devs to look to Node when they need to stand up a back end. At least, Grunt was a pathway into Node for me anyway.
I don't have any experience with Go or Erlang, but Node's particular brand of asynchrony is all about non-blocking IO. There are no threads -- all instructions happen in one thread.
Anyway, the reason probably has rather to do with JavaScript (V8's speed) and node's eco-system (tools, libraries).