                                  ::clnt/chan->server chan->server))]
     (try
       (let [unstarted-server (srvr/ctor (::server options))
-            server<-client {:chan (strm/stream)}
-            server->client {:chan (strm/stream)}]
+            chan<-client {:chan (strm/stream)}
+            chan->client {:chan (strm/stream)}]
         (try
           (log/debug "Starting server based on\n"
                      #_(with-out-str (pprint (srvr/hide-long-arrays unstarted-server)))
                      "...stuff...")
           (try
             (let [server (srvr/start! (assoc unstarted-server
-                                             ::state/client-read-chan server<-client
-                                             ::state/client-write-chan server->client))]
+                                             ::state/client-read-chan chan<-client
+                                             ::state/client-write-chan chan->client))]
               (try
                 ;; Currently just called for side-effects.
                 ;; TODO: Seems like I really should hide that little detail

    ;; Q: What's up with that?
    (let [succeeded (deref wrote 3000 ::check-timeout)]
      (log/info (str "Client-child send result to " write-notifier " => "  succeeded " @ " (System/nanoTime)))
      ;; N.B. for real implementations: use a PooledByteBufAllocator
      ;; Instead of mucking around with this release-notifier nonsense
      ;; That should work around my current bug, though it's ignoring a
      ;; fundamental design flaw.
      (deferred/chain release-notifier (partial notified-about-release write-notifier release-notifier read-notifier))

          (strm/close! (:chan server->client))
          (strm/close! (:chan server<-client)))))))

(defn build-hand-shake-options
  []
  (let [server-extension (byte-array [0x01 0x02 0x03 0x04
                                      0x05 0x06 0x07 0x08
                                      0x09 0x0a 0x0b 0x0c
