   (remove-handler :foo ::bar-key)
   (event :foo :val 200) ; my-foo-handler no longer called"
   [key]
+  (let [[old new] (swap-returning-prev! lossy-workers* dissoc key)]
+    (when-let [old-worker (get old key)]
+      (.put (:queue old-worker) :die)))
   (handlers/remove-handler! handler-pool key))
 
 (defn remove-all-handlers
   "Remove all handlers."
   []
+  (let [[old new] (swap-returning-prev! lossy-workers* (fn [_] {}))]
+    (doseq [old-worker (vals old)]
+      (.put (:queue old-worker) :die)))
   (handlers/remove-all-handlers! handler-pool))
 
 (defn event

(defonce ^:private event-debug* (atom false))
(defonce ^:private monitoring?* (atom false))
(defonce ^:private monitor* (atom {}))

(defrecord LossyWorker [queue worker current-val])


  potentially long-running handler fns where handling the most recent
  event is all that matters."
  [event-type handler key]
  (log-event "Registering lossy event handler:: " event-type key)
  (let [worker (lossy-worker (fn [val]
                               (handler val)))
        [old _] (swap-returning-prev! lossy-workers* assoc key worker)]
    (when-let [old-worker (get old key)]
      (.put (:queue old-worker) :die))
    (on-sync-event event-type
                   (fn [msg]
                     (lossy-send worker msg))
