However, this mistake has taught me something(s) very valuable -
1) Don't trade in a tried and tested framework for something like Node.js, that will open up a different level of problems altogether.
2) No matter what language you use, you WILL face issues at scale. Be it Node.js/Scalatra/Rails. You might as well face it with a tried and tested framework.
3) Don't re-write your own framework in something like Go or Haskell or C or C++ or etc. thinking it will be scalable, etc.
You will -
a) Waste massive amounts of time re-inventing the wheel,
b) Open yourself to possibly dangerous security vulnerabilities (Eg: Handling encrypted cookies),
c) Waste your time on things that don't really matter instead of on something that actually matters - The product itself.
4) Anything that you can scale by throwing more money at it is for the win[1]
Why am I talking about scalability, when the discussion is about Async. vs Sync. programming? Because of the reasons many people cite using Node.Js and the like. It's just not worth it. Focus on the product first and the architecture later. This comes from someone who wasted a year of his life doing everything above.
[1]http://highscalability.com/blog/2013/4/15/scaling-pinterest-...