Что касается меня лично, я предпочитаю объект, который отвечает за создание чего-либо, например представления или всплывающие окна, должен отвечать за их уничтожение. И я предпочитаю использовать Mate только для решения некоторых межприкладных задач, особенно клиент-серверных коммуникаций. Поэтому я предпочитаю использовать обычную старую обработку событий ActionScript на уровне компонентов. И если какой-то компонент создал всплывающее окно, он может прослушать некоторое событие отправки и уничтожить всплывающее окно.
Другой случай, если всплывающее окно было создано самим Мате (я имею в виду на карте событий). В этом случае я не вижу проблемы уничтожить окно в обработчике Mate, который обрабатывает некоторое событие submit, выполняет запрос к серверу и сразу уничтожает окно.
Но в любом случае вы должны отправлять события Mate (я имею в виду события, которые обрабатываются картой событий), используя простое правило: не отправляйте события низкого уровня. Вы должны преобразовать их в события, отражающие бизнес-логику на соответствующем уровне приложения. В вашем случае вы не должны рассматривать отправку формы в виде двух операций: запрос сервера и закрытие окна. С точки зрения окна, это просто отправка формы, и окно не должно заботиться о том, будет ли запрос к серверу или чтение данных из SharedObject или даже из какой-либо модели. Поэтому окно должно отправлять событие submit, а карта Mate должна обрабатывать это событие и создавать запрос и уничтожение окна в одном и том же обработчике. Таким образом, вы можете использовать свой вид, не зная, отображается ли вид во всплывающем окне или, возможно, в собственном окне AIR. Просто настройте карту событий вашего Mate.
И не забывайте, что карта Мате может быть иерархической. Таким образом, вы можете разделить уровни обработки событий бизнес-логики.