     identity))
 
 (s/defn ^:always-validate ^:private heartbeat
-  "Starts the WebSocket heartbeat task that sends pings over the
+  "Provides the WebSocket heartbeat task that sends pings over the
   current set of connections as long as the 'should-stop' promise has
   not been delivered.  Will keep a connection alive, or detect a
   stalled connection earlier."
   [client :- Client]
-  (log/debug "WebSocket heartbeat task is about to start" client)
   (let [{:keys [should-stop websocket-client]} client]
     (while (not (deref should-stop 15000 false))
       (let [sessions (.getOpenSessions websocket-client)]

;; ClientInterface
(declare -connecting? -connected?
         -associating? -associated?
         -wait-for-connection -wait-for-association -send! -close)

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

    pcp-broker.")
  (close [client]
    "Close the connection.  Once the client is close you will need a
    new one.")
  (start-heartbeat-thread [client]
    "Starts a thread that will periodically send WebSocket pings to the pcp-broker.
    Propagates any unhandled exception thrown while attempting to connect.
    Will raise ::not-connected if the client is not currently connected with the
    pcp-broker."))

(def Handlers
  "schema for handler map.  String keys are data_schema handlers,
