The method I used worked by having a passage named, for example, "repeat".
(set: $timer to $timer -1)
(if: $timer > 0)[(display: "repeat")]
The problem with this system is that after large enough amount cycles the system recognizes what its doing and registers an error before it can finish the system.
Comments
Harlowe does not currently have a (for:) / (while:) / (repeat:) macro, you can however use the (live:) macro to emulate it but the downside is that it can interfere with the Reader's ability to interact with your story. You can also use the (stop:) macro to stop a (live:) timer. ... I added indents and line-breaks to the above to make it more readable, they can be removed.