anchor.diff:  (defun http-request (request)
     (let ((retries 0)
           (response))
  -    (dropbox-sign-request *dropbox* request)
  +    (when (request-requires-signature request)
  +      (dropbox-sign-request *dropbox* request))
       (tagbody
        :retry
          (handler-bind ((cl-dropbox-api-transient-server-error (lambda (c)
  
positive.code:         (error error-type :response response)
          (response-body response))))
  
  
  (defun account-info (&optional (locale "en"))
    (http-request (make-instance 'api-request :path "account/info"
                                              :params `(("locale" . ,locale)))))
  
negative.code:     response))
  
  (defun process-response (response)
    (when (and (header-value response "content-type")
               (or
                (alexandria:starts-with-subseq "text/" (header-value response "content-type"))
                (equal "application/json" (header-value response "content-type"))))
      (setf (slot-value response 'body) (ensure-string (response-body response)))
      (if (or (equal "application/json" (header-value response "content-type"))
              (equal "text/javascript" (header-value response "content-type")))
          (setf (slot-value response 'body) (yason:parse (response-body response)))
          ;; still try to handle text/json and other zoo animals
          (alexandria:if-let ((json (ignore-errors (yason:parse (response-body response)))))
            (setf (slot-value response 'body) json))))
    (let* ((status-code (response-status-code response))
           (error-type))
      (cond
        ((and (>= 200 status-code)
              (< 300 status-code))
  