   (closed? [_]
     (get-in @ago-world [:closed buf-id] false))
   (close! [this]
+    (set! (.-closed m2m-ch) (protocols/closed? this))
     (swap! ago-world #(assoc-in % [:closed buf-id] true))
     (protocols/close! m2m-ch)))
 

(defn ssa-put [state blk ^not-native c val]
  (let [ago-ch (aget state ioc-helpers/USER-START-IDX)
        ago-world (chan-ago-world ago-ch)
        active? #(and (seqv-alive? ago-world (chan-seqv ago-ch))
                      (seqv-alive? ago-world (chan-seqv c)))]
    (if-let [cb (protocols/put!
                 c val
                 (fn-handler

(defn ssa-take [state blk ^not-native c]
  (let [ago-ch (aget state ioc-helpers/USER-START-IDX)
        ago-world (chan-ago-world ago-ch)
        active? #(seqv-alive? ago-world (chan-seqv ago-ch))]
    (if-let [cb (protocols/take!
                 c (fn-handler
                    active?
