      ;; 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)
+     external-reader :- (s2/=> 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)
+     external-writer :- (s2/=> s2/Any mq-cmn/Socket fr-sch/java-byte-array)
      ;; For requesting status messages
      ;; Put the channel where you want the response
      status-chan :- AsyncChannelComponent]

(declare run-async-loop! run-zmq-loop!
         do-signal-async-loop-exit
         do-wait-for-async-loop-to-exit)
(s/defrecord EventPair
  [_name :- s/Str  ; Because trying to figure out which is what is driving me crazy

   interface :- EventPairInterface


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

(s2/defn
  ^:always-validate
  run-zmq-loop!
  :- fr-sch/async-channel
