Hi,
I had to implement such "queuing" of events because I was receiving seveal events and the fsm processing this event would take a lot longer to process then the occurences, so I did it this way:
One Fsm "Listener" is receiving this event, it doesn't nothing else than incrementing a number. If you pass event data, either store it into an array, else create a GameObject as a child and have an hashtable defining the properties of that event.
A Second Fsm knows about "Listener" and it knows if it's processing something or not, when it doesn't process it checks on "Listener" if there are pending events, if there is decrease by one the number and execute one process, when the process is done, it comes back to the check routine.
now you'll face another small issue, you don't want to watch constantly the "Listener" using an getFsmInt everyframe, it works, but not pretty ( I do it a lot of time... but here I am just going clean...) on the state that checks if there is a pending event, you'll get stuck if there isn't, and so you can have a transition on that state, that "Listener" can fire, that event, because a transition of a state will only be caught by your fsm if this state is active and so while processing, "Listener" will attempt to wake up your fsm to tell it to process. it may or may not be caught, depending on wether the active state is indeed the one when nothing is being processed.
Hope that's clear enough
Bye,
Jean