Program Design Considerations
It is important to remember that the events generated to state machines are implemented by the moore package using the Tcl event loop. So, event delivery is asynchronous. After generating an event, execution continues immediately and the dispatch of the event will happen only when the event loop is entered. This implies that the design of your program should be event driven. Event driven designs are unfamiliar to some folks, but the point here is that the state machines are intended to support an event driven design.
As it turns out, the moore package also supports synchronous delivery of events (using the receive method). This type of execution model is useful in certain contexts, but the example we present now is event driven.