fwiw, I think I now have the best version of that
(def mchain! (comp chain! (ingo a/merge) (p a/into [])))
since merge gives you results in the order they become ready, if you just compose a merge with the chain! operation, then you have a performant way to flatten out channels
ingo is just -> (defn ingo [f] (fn [c] (go (f (<! c)))))