   (connected? [client] (-connected? client))
   (wait-for-connection [client timeout] (-wait-for-connection client timeout))
   (send! [client message] (-send! client message))
-  (close [client] (-close client))
-  (start-heartbeat-thread [client] (-start-heartbeat-thread client)))
+  (close [client] (-close client)))
 
 (s/defn ^:private -connecting? :- s/Bool
   [client :- Client]

;; with the dash so they're not clashing with the versions defined by
;; ClientInterface
(declare -connecting? -connected?
         -wait-for-connection -send! -close
         -start-heartbeat-thread)

(s/defrecord Client
  [server :- s/Str

            (catch Object _
              (log/error (:throwable &throw-context) (i18n/trs "Unexpected error"))
              (throw+)))
          (recur (min maximum-sleep (* retry-sleep sleep-multiplier)) (promise))))))

(s/defn -wait-for-connection :- (s/maybe Client)
  "Waits until a client is connected. If timeout is hit, returns falsey"
