    (and val (not= val stopper))  ; got a message that wasn't stopper
    (and (not= c in-chan) (not= c status-chan))))
 
-(s/defn ^:always-validate run-async-loop! :- fr-sch/async-channel
+(s2/defn ^:always-validate run-async-loop! :- fr-sch/async-channel
   "TODO: Convert this to a pipeline"
   [{:keys [async->sock in<->ex-chan interface _name stopper] :as component}]
   (let [{:keys [in-chan status-chan]} interface

     ;; reconnecting dropped sessions, etc.
     ;; Luckily (?) these are the server writer's problems.
     ;; TODO: Refactor-rename these to just reader/writer
     external-reader :- (s/=> fr-sch/java-byte-array mq-cmn/Socket)
     ;; I *think* this returns bool, but, honestly,
     ;; it should return nil
     external-writer :- (s/=> s/Any mq-cmn/Socket fr-sch/java-byte-array)
     ;; For requesting status messages
     ;; Put the channel where you want the response
     status-chan :- AsyncChannelComponent]

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Public

(s2/defn status-check
  "Really just a synchronous wrapper over the basic idea"
  [event-pair :- EventPair]
  (let [interface (:interface event-pair)
