As far as I could understand, the close! implementation follows all takes and run their respective callbacks for releasing.

The approach I follow was doing the same for puts, 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.