   [event-v]
   (if (nil? event-v)
     (warn "re-frame: \"dispatch\" is ignoring a nil event.")     ;; nil would close the channel
-    (put! event-chan event-v)))
+    (put! event-chan event-v))
+  nil)   ;; Ensure nil return. See https://github.com/Day8/re-frame/wiki/Returning-False
 
 
-;; TODO: remove sync handling.  I don't like it, even for testing.
+;; TODO: remove sync handling.  I don't like it much, even for testing.
 (defn dispatch-sync
   "Invoke the event handler sycronously, avoiding the async-inducing use of core.async/chan"
   [event-v]

;; -- The Event Conveyor Belt  --------------------------------------------------------------------
;;
;; Moves events from "dispatch" to the router loop.
;; This alows for aysnc handling of events.
;;
(def ^:private event-chan (chan))    ;; TODO: how big should we make the buffer?



;; -- router loop ---------------------------------------------------------------------------------
;;
;; In a perpretual loop, read events from the dispatch channel, and route them
;; to the right handler.
;;
;; Because handlers occupy the CPU, before each event is handled, hand
