Ordem de execução do manipulador de eventos do ActionScript

Eu tenho tentado entender como os eventos do ActionScript são implementados, mas estou preso.

Eu sei que o AS é single threaded, o que significa que apenas um manipulador de eventos estará executando por vez, e também significa que os manipuladores serão executados em uma ordem determinística *.

Por exemplo, considere o seguinte código:

1: var x = {executed: false};
2: foo.addEventListener("execute", function(){ x.executed = true; });
3: foo.dispatchEvent(new Event("execute"));
4: assert(x.executed);

Se o ActionScript fosse multiencadeado, seria possível que a asserção na linha 4 falhasse às vezes e sucedesse outras.

Mas como o AS não é multi-threaded, é lógico que a afirmação sejasempre falha² ousempre suceder³. Ou, em outras palavras, os eventos serão tratados de maneira determinística.

Então, essa suposição (que os eventos são tratados de forma determinista) está correta? A Adobe fornece alguma documentação definitiva sobre o assunto?

Nota: eu sousó em causa aqui com eventos despachados pordispatchEvent - Eu percebo que os eventos "externamente despachados" (tráfego de rede, entrada do usuário, temporizadores, etc.) se comportam de maneira diferente.

*: com a exceção, é claro, de eventos acionados por itens não determinísticos, como entrada do usuário ou tráfego de rede.
²: sempre falharia se, por exemplo, se o algoritmo de manipulação de eventos fosse: "empurre novos eventos para uma pilha, depois elimine continuamente o primeiro evento da pilha, execute-o até que ele termine e vá para o próximo evento" .
³: sempre teria sucesso se os eventos enviados pordispatchEvent foram manipulados assim que foram despachados.