         (alter handler-ref* assoc event-type (dissoc handlers key))))))
 
 (defn clear-handlers
-  "Remove all handlers for events of type event-type."
+  "Remove all handlers (both sync and async) for events of type event-type."
   [event-type]
   (dosync
     (alter event-handlers* dissoc event-type)

                   (with-out-str (.printStackTrace e)))))))

(defn- handle-event
  "Runs the event handlers for the given event, and removes any handler that returns :done."
  [handlers* event]
  (log/debug "handling event: " event)
  (let [event-type (:event-type event)


(defn event
  "Fire an event of type event-type with any number of additional properties.

  NOTE: an event requires key/value pairs, and everything gets wrapped into an
  event map.  It will not work if you just pass values.

