When a transducer is applied to a channel and an exception occurs during transformation the ex-handler will be called with
the Throwable as an argument.
Can we also send the val which caused the transformation exception to the ex-handler? When dealing with transducer errors it might be useful to have the full picture.
If that's agreeable, and the solution is a second-arity on ex-handler that takes val and throwable, and the call applied is:
clojure.core.async.impl.channels becomes:
`
(defn chan
...
(try
(add! buf val)
(catch Throwable t
(handle buf exh t val)))))))))
`