Welcome! Please see the About page for a little more info on how this works.
(def c1 (chan))
(def c2 (chan))
(def out (a/map vector [c1 c2]))
(a/<!! out) ;; will hangs until I put item to `c2` or close `c2`
I think the better way is close output channel immediately when any of input channels closed.