                                cookie-waiter
                                (System/nanoTime)
                                ;; FIXME: The initial timeout needs to be customizable
+                               ;; Q: Why aren't I using timeout?!
                                (util/seconds->nanos 1)
                                ;; Q: Do we really want to max out at 8?
                                ;; 8 means over 46 seconds waiting for a response,

                            ::do-polling-loop
                            "Polling server"
                            {::specs/srvr-ip ip})
        cookie-response (dfrd/deferred executor)
        this (-> this
                 (assoc ::log/state log-state)
                 (assoc-in [::state/server-security ::specs/srvr-ip] ip))
        cookie-waiter (partial cookie-sent-callback
                               this
                               cookie-response
                               timeout)
        {log-state ::log/state
         dfrd-send-success ::specs/deferrable} (state/do-send-packet this

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Specs

;; TODO: Fix this spec. s/keys just doesn't cut it.
;; If we have any of the "optional" keys, we must have all 3.
;; And, realistically, I don't want anything more. There's
;; to much potential to smuggle in extra crap that shouldn't
;; be involved here.
(s/def ::cookie-response (s/keys :req [::log/state]
                                 :opt [::state/security
                                       ::state/shared-secrets
