       (include-vertex! [_ v] (err/unsupported!))
       (execute!
         [_]
-        (add-watch! g :remove-vertex watch-id (fn [evt] (signal! (peek evt) sync-vertex-signal)))
+        (add-watch! g :remove-vertex watch-id (fn [[__ v]] (signal! v sync-vertex-signal)))
         (let [t0 (now)]
           (loop [i 0, colls 0, sigs 0]
             (if (<= i max-iter)
               (let [verts (vertices g)
                     sigs' (sig-fn verts s-thresh)
                     colls' (coll-fn verts c-thresh)]
-                (if (and (pos? sigs') (pos? colls'))
+                (if (or (pos? sigs') (pos? colls'))
                   (recur (inc i) (long (+ colls colls')) (long (+ sigs sigs')))
                   (do (remove-watch! g :remove-vertex watch-id)
                       (execution-result :converged colls sigs t0 {:iterations i}))))

        [clojure.core.reducers :as r]
        [cljs.core.async :as a :refer [chan close! <! >! alts! timeout]])]))

#?(:clj (taoensso.timbre/set-level! :warn))

;; (warn :free-ram (.freeMemory (Runtime/getRuntime)))



(defn compute-graph
  [] (InMemoryGraph. (atom {:vertices {} :next-id 0}) (atom {})))

(defn eager-async-vertex-processor
  [{:keys [id] :as vertex} ctx]
