Bad_cast Бросается, если исходный протокол не ориентирован на поток.
Статья generic::stream_protocol::stream_protocol (2 of 2 overloads) раздела Boost.Asio generic::stream_protocol::stream_protocol может быть полезна для разработчиков на c++ и boost.