Affects Version/s: None
Fix Version/s: None
A mult can become blocked after a putting to a closed tap channel due to an off-by-one error in triggering the end condition.
It appears the issue was recently fixed in the Clojure version of mult, but not the ClojureScript version.
The issue occurs because the counter that indicates the mult has finished a putting to all taps, dctr is decremented out of band and the zero? triggering condition in done function is missed.
The done function passed to put! appears to be called regardless of whether the channel is closed. Because of this, we don't need to (swap! dctr dec) or necessarily call (done nil) (the CLJ fix) to fix this issue.