There is a new [asyncstreams](https://github.com/vegansk/nimboost/blob/master/src/boost/io/asyncstreams.nim) module in nimboost. It provides API close to streams module in stdlib, so it's probably too low-level for your standards, though.
As for a cleaner abstraction, you might want to look into [iteratees](https://en.wikipedia.org/wiki/Iteratee) for that - seems close to what you're talking about.
