   (if (stream-open? (:socket peer))
     [id peer]
     (-> (d/let-flow [socket (client (:hostname peer) (:port peer))
-                     _ (s/put! socket {:src (:id state) :type :peering-handshake})]
+                     _ (s/try-put! socket {:src (:id state) :type :peering-handshake} 100)]
           (s/connect socket (:rx-stream state) {:downstream? false})
           [id (assoc peer :socket socket)])
         (d/catch (fn [ex]

  "Returns a function that will handle the handshake for incoming connections."
  [state]
  (fn [s info]
    (d/let-flow
     [handshake (s/take! s)]
     (-> ((condp = (:type handshake)
            :peering-handshake connect-peer-socket!
            :table-tennis connect-table-tennis-socket

    (if (stream-closed? socket)
      (dissoc-in state [:clients client] :socket)
      (do
        (s/try-put! socket (dissoc p :client-dst) 100)
        state))))

(defn- send-pkt
