(defn
chan
([buf] (chan buf nil))
([buf xform] (chan buf xform nil))
([buf xform exh]
(ManyToManyChannel.
(buffers/ring-buffer 32)
0
(buffers/ring-buffer 32)
0
buf
false
(let
[add! (if xform (xform impl/add!) impl/add!)]
(fn
([buf] (try (add! buf) (catch :default t (handle buf exh t))))
([buf val]
(try (add! buf val) (catch :default t (handle buf exh t)))))))))