While asynchronous solutions have been around for years, they are getting more and more common these days. The primary reason is that having an application without thousands of concurrent users is not an uncommon scenario anymore; it's actually the norm for a small/medium-sized application and we can scale to millions with major services used worldwide.
Being able to serve such volumes doesn't scale well with approaches based on threads or processes. Especially when many of the connections that users are triggering might be sitting there doing nothing most of the time. Think of a service such as Facebook Messenger or WhatsApp. Whichever you use, you probably send a message once in a while and most of the time your connection to the server is sitting there doing nothing. Maybe you are a heavy chatter and you receive a message every second, but that still means...