1) there's an unusual amount of logic shared between browser and server
2) a web layer needs to be isomorphic
Node hits a sweet spot for these, but it's not my choice any more for non-web servers like the micro-services that back up mobile and single page apps.
I abandon Node.js after a first project years ago because of the callback soup. I came back when promises promised an alternative. Now I run into situations where promises cascade up from a few async calls and affect every API built on top of them. Perhaps async/await will improve the situation.
I'm curious where Node.js fits for other people.