Node JS Asynchronous requestHandler (for routing)

I was going through The Node Beginners book and had a doubt regarding the "synchronous way" of requesting handling by node js. Well what i mean is suppose my website has 2 pages start and upload (as per the tutorial) and I make concurrent request to the 2 pages, then requests are handled serially (like first start will be fetched and then upload will be fetched). If my website receives 100 requests per second (and I am running only a single node process) all these requests will be handled serially. So doesn't it make sense for the router
to call all the requestHandlers in setTimeOut (something like setTimeOut(handler(response), 0) )? This way the task of router will just be limited to calling the handler and moving to the next request waiting. Ofcourse the page will take time to load depending on its size and the operation but atleast the time is utilized to do important work instead of just waiting on other pages.

Also I understand that node runs a single process. But it does run multiple threads doesn't it ?

To answer your final question, all of the code you write in JavaScript for a Node program runs in a single thread; Asynchronous I/O tasks are abstracted away by libuv.

I think you are not thinking about your two requests in a granular enough fashion; you said,

first start will be fetched and then upload will be fetched

But, in reality, web requests and responses are made up of various IO tasks, not just the processing you do in your JavaScript program. For example, while data streams over a socket for the "start" handler, data can also be streaming into the program for the "upload" handler.