JavaScript is definately a candidate, but I don't think it's going to be node.js. Doing all IO asynchronously strikes me as very premature optimization. I prefer the way Go or Erlang deal with these scaling issues.
Threads on the other hand, are the often the wrong optimisation -- processes are the right one.
Node's async structure is just taking the async model of the web one step further, into processing the same request asynchronously if you need to wait for something else.
You might be master of doing this logic right, but I've audited tens (perhaps hundreds) of systems, and all the synchronous ones got it wrong.
(Disclaimer: I've never worked with Node. But I've been writing async servers in C and Python since 1999).