Sadly - the language is really not quite as 'async' as we would like it to be.
Java scales much better than Javascript though, and I mean that in the architectural sense.
Past 50K lines of code - the lack of typing in JS can start to be hell, unless you really know what you are dong.
Of course, you move much more quickly early on in JS and that's actually important: you need to be able to 'iterate and adapt' in todays world. So it's kind of a paradox.
If you're building a bank, you do it deliberately with Java or something like that.
If you're building a nimble startup, you can start with Node and if there are systems that reach a certain degree of maturity and the uses/cases and data model start to settle you can fold over systems to Java or something like that.
A great team can use anything in the end though - that said, it's really hard to find super talented and responsible people across the board.
JVM concurrency is best in class. It's just the Java language itself that moves at a snail's pace.
There's also, in true Java tradition, a number of competing implementations of Promise based frameworks. The one I've used, Ratpack, defines and uses promises almost identically to JavaScript/Node.js.