I suspect there is an easy-to-optimize performance issue here. The syntax {...} is probably allocating a garbage-collectable table and the syntax function()...end is probably allocating a garbage-collectable closure and that's possibly expensive to do inside the main traffic loop.

If the profiler reveals that `vows:push()` is expensive (or that garbage collection is) then you might want to try creating the {...} table and closure in the initialization function and reuse it in `push()`.

I could also be totally wrong on this guess, not having done any profiling :-). Do you have a reproducible benchmarking setup?