Я еще покопался и нашел ответ на свой вопрос.
Существует необязательный четвертый аргумент в обработчике сообщений "Результат", который вы можете использовать, который является тайм-аутом.
так:
some_fsm_state({set, Val}, State) ->
NewState = do(Val, State),
{next_state, another_fsm_state, NewState, 5000};
another_fsm_state(timeout, State) ->
handle_timeout(State).
another_fsm_state({set, Val}, State) ->
%% more code that handles this state.
Когда вызывается some_fsm_state, он переходит в следующее состояние «another_fsm_state» со временем ожидания 5000 мс. Если в течение 5000 мс получено не новое сообщение, вызывается another_fsm_state (время ожидания, состояние).
Умные OTP-программисты. :)
Следует отметить, что этот четвертый элемент в кортеже Results может находиться в спящем режиме. Пожалуйста, смотрите документацию Erlang для получения дополнительной информации.
Erlang - Hibernate
gen_fsm docs