(defmacro async-code (&body code) `(let ((counter 0)) (lambda () (incf counter) (case counter ,@(loop for counter from 1 for form in code collect `(,counter ,form))))))