For your question: yes, node can be hang by putting a long running proccess on event queue.
You can read some information here: https://nodejs.org/en/docs/guides/dont-block-the-event-loop/
In default, Node have 1 main thread to run event loop and 4 worker thread to run I/O, OS, async task. So if your code take too long to run in the event loop, your app will look like be hang.
For example:
function doWork(duration) {
const start = Date.now();
while (Date.now() - start < duration) {
}
}
app.get('/', (req, res) => {
doWork(10000);
res.send('Hello world');
})
app.get('/hi', (req, res) => {
res.send('Hi');
});
In this case, if your request to first router and request to 2nd router after. The 2nd request will have to wait for 1st request to complete before send the response. So it will be hang on 10 second.
For worker case, if all 4 workers still haven't done their tasks and 5th tasks coming, it will have to wait until one of the worker finish. So if 4 workers take forever to run their job, the 5th job will never be done. You can increase the number of workers but it have down side too. Each maybe take longer to finish their task.
So for Node, it shouldn't work with CPU intensive task, instead it should work for something like API Gateway, handling I/O task, etc... Everything has each own used and depend on situation, we can have solution to resolve. In your upload file case, we can have some limitation for the file upload or your app Node just used for verify data, handshake for other app to upload file instead.
For thousands companies, with their own IT department, I think they already know the advantage and disadvantage to use Node in their case.