Тут дело не в последовательности доставки событий. Это как раз решено. Проблема в том, что неизвестно, когда именно событие будет доставлено. Пример (если я понял твою реализацию правильно):
Код AS3:
var dispatcherFirst:YourCustomDispatcher = new YourCustomDispatcher();
dispatcherFirst.adEventListener("first", onFirst1);
dispatcherFirst.adEventListener("first", onFirst2);
var dispatcherSecond:YourCustomDispatcher = new YourCustomDispatcher();
dispatcherFirst.adEventListener("second", onSecond);
var x:int = 0;
dispatcherFirst.dispatch(new Event("first"));
function onFirst1(e:Event):void {
dispatcherSecond.dispatch(new Event("second"));
trace(x); // Output: 0 Expected: 5
}
function onFirst2(e:Event):void {
// any
}
function onSecond(e:Event):void {
x = 5;
}