anchor.diff:          (make-server-thread ,servervar '%restart-thread
                               #'(lambda () 
                                   (sleep (server-config ,servervar :reconnect-cooldown))
  -                                (reconnect ,servervar :try-again-indefinitely T)
  -                                (setf (restart-thread ,servervar) NIL)))))
  +                                (reconnect ,servervar :try-again-indefinitely T)))))
        (disconnect (e)
          (declare (ignore e))
          (v:warn (name ,servervar) "Leaving reconnect-handler due to disconnect condition..."))
  
positive.code: (defmethod reconnect ((server server) &key try-again-indefinitely)
    (v:info (name server) "Reconnecting...")
    (disconnect server)
    (loop for result = (ignore-errors (connect server)) 
       do (if result
              (return-from reconnect server)
              (if try-again-indefinitely
                  (progn
                    (v:warn (name server) "Reconnection failed, trying again in ~as..." (server-config server :reconnect-cooldown))
                    (sleep (server-config server :reconnect-cooldown)))
                  (error 'connection-failed :server server)))))
  
  (defmacro with-reconnect-handler (servervar &body body)
    `(handler-case
  
negative.code:     (setf (gethash (name server) *servers*) server)
      (when start-thread
        (make-server-thread server '%read-thread #'read-loop)
        (make-server-thread server '%ping-thread #'ping-loop)
        (setf (restart-thread server) NIL))
      server))
  
  (defmethod disconnect ((server string) &key (quit-message (config-tree :messages :quit)))
  