There should be a way to leave a state due to a timeout transition. For example, if a state machine for a client is defined, a timeout should be defined in a state in which the program is waiting for a response, but the response message is not received after a time. Ideally, the amount of time could be specified at run-time.
I haven't found a way to implement this through the state machines, and it seems to make sense for implementing the request-response model.