   (-process-1st-event [this])
   (-run-next-tick [this])
   (-run-queue [this])
-  (-pause-run [this])
+  (-pause-run [this later-fn])
   (-exception [this ex])
   (-begin-resume [this]))
 


            ;; processing one event after another
            [:running :add-event ]  [:running   #(-add-event this arg1)]
            [:running :pause-run ]  [:paused    #(-pause-run this)]
            [:running :exception ]  [:quiescent #(-exception this arg1)]
            [:running :finish-run]  (if (empty? queue)       ;; FSM guard
                                      [:quiescent]
                                      [:scheduled  #(-run-next-tick this)])

            ;; event processing is paused - probably by :flush-dom metadata
            [:paused :add-event    ]  [:paused   #(-add-event this arg1)]

        (if (zero? n)
          (-fsm-trigger this :finish-run nil)
          (let [event-v (peek queue)]
            (if-let [later-fn (some later-fns (keys (meta event-v)))]
              (-fsm-trigger this :pause-run later-fn)
              (do (-process-1st-event this)
                  (recur (dec n)))))))))

  (-pause-run
    [this later-fn]
    (later-fn #(-fsm-trigger this :begin-resume nil)))

  (-begin-resume
    [this]
