I use this for these cases to ensure the channels are not blocking anything when they're closed
(defn drain! [ch]
(a/close! ch)
(->> (repeatedly #(a/poll! ch))
(take-while identity)
doall))
did think of this. i might as well proceed with this for now and think of a clean strategy later