About this
(defjsmacro with-timeout ((timeout) &body body) `(set-timeout (lambda () ,@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 ,@body) (:catch (e))))
[...]