When the player moves, this may trigger arrows to fly, boulders to fall, and so on. The behaviour of these various objects is relatively simple, but the order in which things happen is not so simple. The original program uses recursion to deal with the way in which one event triggers another. The result is a slight loss of realism (not that the game is all that realistic in the first place).
For example, if you move near two objects, say an arrow and a boulder, and set them going, the entire flight of the arrow, and everything it triggers, happens before the boulder moves. In other words, the program is doing a depth-first search for things to do. It is more normal to use an event queue to give a more concurrent, breadth-first physics.
The reconstruction uses events rather than recursion. However, to reproduce the game as accurately as possible, an event stack is used instead of an event queue. This gives the same effect as recursion, but makes it easy for someone to switch to a queue if they want to investigate the difference.