(let (condition) (restart-case (request% …) (retry () :test (lambda (c) (typep c 'http-error)) :report "Retry the HTTP request." (recur)) (confirm-payment () :test (lambda (c) (when (typep c 'http-402-payment-required) (setf condition c) ; awful t)) :report "Confirm payment and retry the HTTP request." (do-something condition) (recur))))