    (and val (not= val stopper))  ; got a message that wasn't stopper
    (and (not= c in-chan) (not= c status-chan))))
 
-(s/defn run-async-loop! :- fr-sch/async-channel
-  [{:keys [async->sock interface _name stopper]} :- EventPair]
+(s/defn ^:always-validate run-async-loop! :- fr-sch/async-channel
+  [{:keys [async->sock interface _name stopper]}]
   (let [{:keys [in-chan status-chan status-out]} interface
         internal-> async->sock
         minutes-5 (partial async/timeout (* 5 (util/minute)))]

               :async-loop nil
               :zmq-loop nil)))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Internal


        (log/error ex "Unhandled 0mq Exception. 0mq loop exiting")
        :unhandled-0mq-exception))))

(s/defn ^:always-validate run-zmq-loop! :- fr-sch/async-channel
  [{:keys [interface ->zmq-sock ex-chan]
    :as component}]
  (let [{:keys [ex-sock external-reader externalwriter]} interface
        poller (mq/poller 2)]
    (mq/register-socket-in-poller! poller (:socket ex-sock))
