I recently built something to connect asio with gRPC: https://github.com/WolleTD/asio-grpc-callback
The channels and co_yield-capable coros from asio::experimental are quite fun to use for streams. When you have prior experience with async programming in other languages, e.g. Python or Rust, it's really handy that you don't have to define any awaitable types to use asio with coroutines.