Abstraction over file streams using clojure async channels