There are plenty of async idioms that make callbacks a breeze.
Would all the developers writing apps on node.js who are doing 10,000+ concurrent requests per process please stand up?
You obviously haven't written a lot of async code so not sure why you're so against the idea.
Also, I'd say I've written enough code on top of node.js to be qualified to comment on this. Here's some of it that's open source:
https://github.com/rbranson/glob-trie.js https://github.com/rbranson/twerk https://github.com/rbranson/node-ffi
At one stage I had the same train of thought that you have (http://chris6f.com/synchronous-nodejs / https://github.com/chriso/synchronous/blob/master/lib/protot...) - it would be nice to have the option of fibers, but it's not going to happen.
IMO async code isn't as difficult or ugly as you make it out to be. Is async code as easy to write and follow as sync code? No. Is it worth the benefits I've mentioned? For me, yes.
The cost of hosting a webapp tends to be a rounding error in contrast to the cost of developing the webapp.
The additional benefit is that I can take the same program and handle 20,000+ concurrent users on two servers— which is when I suddenly become very glad that my hardware costs are significant compared to my dev costs.
4000+ requests being sent every second to the server in total, the server is a single node process.