Comment made by: andrewhr
As far as I could understand, the close!
implementation follows all take
s and run their respective callbacks for releasing.
The approach I follow was doing the same for put
s, so we guarantee previously parked put
will be release - like demonstrated by the general case of this error.
In the same patch, I added a single test to assert this behavior and ported the same code to ClojureScript implementation. I could split both impls on different patches, but I judged having everything together will ease the screening.