About this (defjsmacro with-timeout ((timeout) &body body) `(set-timeout (lambda () , at body) ,timeout)) I wonder if with-timeout is really the best name for it? I mean something like do-after-delay would make more sense. PS. Here's another one (defjsmacro ignore-errors (&body body) `(try (progn , at body) (:catch (e)))) [...]