I would also suggest splitting this into 2 states, but if you really need to stay in 1 state, your custom action can read how long the current state has been active using State.StateTime (see GetTimeInfo.cs for an example). You could test against this to add a delay to your action.