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:            finally (read-char stream))))))
  
  (defun ping-loop (&optional (server *current-server*))
    (with-reconnect-handler server
      (let ((name (name server)))
        (with-simple-restart (exit "<~a> Exit the ping loop." name)
  
negative.code: (defmethod reconnect ((server server) &key try-again-indefinitely)
    (v:info (name server) "Reconnecting...")
    (disconnect server)
    (handler-bind ((connection-failed
                    #'(lambda (err)
                        (if try-again-indefinitely
                            (progn
                              (v:warn (name server) "Reconnection failed, trying again in ~as..." (server-config server :reconnect-cooldown))
                              (invoke-restart 'reconnect))
                            (error err)))))
      (loop do (sleep (server-config server :reconnect-cooldown))
         until (with-simple-restart (reconnect "Retry connecting.") 
                 (connect server)))))
  
  (defmacro with-reconnect-handler (servervar &body body)
    `(handler-case
  