Cómo cerrar sesión 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>

Así que este es mi pensamiento: cuando el usuario haga clic atrás, actualice o cierre la ventana, aparecerá el cuadro emergente estándar antes de descargar junto con el texto ubicado en mi variable de mensaje. Luego, si el usuario presiona Cancelar, el evento de descarga no se ejecutará y el usuario permanecerá en la página actual. Pero si el usuario pulsa Bien, entonces el evento onunload debería activarse, lo que luego ejecuta mis clases de cierre de sesión.

Esto es lo que está sucediendo: la ventana emergente aparece cuando es necesario y el botón Cancelar también funciona. Pero si el usuario hace clic en Aceptar, parece que el evento onunload se desencadena demasiado rápido para que mis clases de cierre de sesión se ejecuten, porque nunca las desconecta.

Sé que mis clases de cierre de sesión funcionan porque si acabo de llamar a mi flex.unloadMethod en la onbeforeunload, las desconecta.

He investigado esto durante una semana y parece que estoy cerca, pero estoy poniendo algo en el lugar equivocado. Si tienes algún ejemplo o consejo, sería de agradecer.

Respuestas a la pregunta(1)

Su respuesta a la pregunta