anchor.diff:                                       :as-string as-string)
       (cond ((null expect) (values command argument))
             ((eq command expect) argument)
  -          (t (error 'authentication-error
  -                    :command command
  -                    :argument argument)))))
  +          (t (error 'authentication-error :command command :argument argument)))))
   
   (defun send-authentication-command (connection command &rest arguments)
     "Send an authentication command to the server."
  
positive.code: (defun call-with-if-failed-handler (if-failed function)
    "Call FUNCTION in a context according to IF-FAILED:
  
    :ERROR - signal an error on failure.
  
    NIL - return NIL on failure."
    (ecase if-failed
      (:error (funcall function))
      ((nil) (ignore-errors (funcall function)))))
  
negative.code: (defun parse-authentication-response (line &key as-string)
    "Parse authentication response line and return two values:
  
    :REJECTED
  
      Current authentication exchanged failed; the second value is a
      list of authentication mechanisms.
  
    :OK
  
      Client has been authenticated; the second value is the server's
      UUID.
  
    :DATA
  
      Data are available; the second value is either an octet vector or
      a string, depending on the value of AS-STRING.
  
    :ERROR
  
      Bad command or arguments; the second value is NIL.
  
    :UNEXPECTED
  
      Unexpected command; the second value is the response line."
    (cond ((starts-with-subseq "REJECTED " line)
           (values :rejected (split-sequence #\Space line :start 9)))
          ((starts-with-subseq "OK " line)
  