We use asio in a windows-based project, which involves a lot of networking, including tens or even hundreds of simultaneous data-streams - and it works well.
However, as Marat said, with asynchronous design one should be very careful about the lifetimes of the involved objects, because any flaw can cause in various kinds of memory/stack corruption. That's why asio-based designs usually extensively utilize shared_ptr's and shared_from_this idiom, instead of attempts to manage objects' lifetime manually.