Como fazer logout durante onbeforeunload / onunload usando Javascript

<script type="text/javascript">

window.onbeforeunload=before;
window.onunload=after;

function before(evt)
{
   var message="If you continue, your session will be logged out!";
   if(typeof evt=="undefined"){
      evt=window.event;
   }
   if(evt){
      evt.returnValue=message;
   }
}

function after()
{
   var flex=document.${application}||window.${application};
   flex.unloadMethod(); //calls the flex class containing the "unloadMethod()" which
                        //calls the logout.jsp that does the actually dropping of credentials
}

</script>

Então, este é o meu pensamento: quando o usuário clica para trás, atualiza ou fecha a janela, a caixa pop-up onbeforeunload padrão aparecerá junto com o texto localizado na minha variável de mensagem. Em seguida, se o usuário clicar em Cancelar, o evento onunload não será executado e o usuário permanecerá na página atual. Mas, se o usuário clicar em OK, o evento onunload deverá ser disparado, o que executará minhas classes de logoff.

Isto é o que está acontecendo: O pop-up aparece quando necessário e o botão Cancelar também funciona. Mas se o usuário clicar em OK, parece que o evento onunload é disparado muito rapidamente para que minhas classes de logoff sejam executadas, porque ele nunca faz logoff delas.

Eu sei que minhas classes de logout funcionam porque se eu apenas chamar meu flex.unloadMethod no onbeforeunload, elas serão desconectadas.

Eu pesquisei isso por uma semana e parece que estou perto, mas estou colocando algo no lugar errado. Se você tem algum exemplo ou conselho, seria apreciado.

questionAnswers(1)

yourAnswerToTheQuestion