You can abuse JavaScript's setTimeout for basic tail call optimisation. Neat.