¿Cómo enviar una solicitud HTTP onbeforeunload en AngularJS?

Tengo una aplicación angular simple que tiene dos vistas que se cargan usando ngRoute. Necesito hacer una limpieza en el servidor cuando el usuario navega entre las vistas y cuando el usuario abandona la página (actualiza la ventana, cierra la pestaña o cierra el navegador).

Mi primera parada fue aquí:Mostrar alerta en angularjs cuando el usuario abandona una página. Se resolvió el primer caso en el que el usuario navega entre las vistas. He manejado la limpieza así:

$scope.$on('$locationChangeStart', function (event) {
    var answer = confirm("Are you sure you want to leave this page?")
    if (answer) {
        api.unlock($scope.id); //api is a service that I wrote. It uses angular $http service to handle communications and works in all other cases.
    } else {
        event.preventDefault();
    }
});

Sin embargo, no he podido manejar el caso en el que el usuario abandona la página. Siguiendo la respuesta anterior y esta publicación de Grupos de Google:https://groups.google.com/forum/#!topic/angular/-PfujIEdeCY Intenté esto:

window.onbeforeunload = function (event) {
    api.unlock($scope.id); //I don't necessarily need a confirmation dialogue, although that would be helpful. 
};

Pero no funcionó. Entonces he leído aquí:¿Cómo ejecutar la función ajax onbeforeunload? que la solicitud debe ser sincrónica y aquí:Cómo $ http llamada síncrona con AngularJS que Angular no es compatible con esto (aunque este podría estar desactualizado).

También intenté llamar a $ http directamente (sin el servicio) pero tampoco funcionó. En este punto estoy atascado. Cualquier sugerencia / clientes potenciales sería muy apreciada.

¡Gracias por adelantado!

Respuestas a la pregunta(2)

Su respuesta a la pregunta