Javascript OOP - perdido esto en devolución de llamada asincrónica

Tengo un problema que todavía me molesta en js oop: estoy seguro de que lo estoy haciendo mal, pero no puedo saber cómo hacerlo bien.

Por ejemplo, tengo este código

Auth.prototype.auth = function () {
    var request = new XMLHttpRequest();

    request.open('GET', this.getAuthServerURL() + '/token', true);
    request.send();

    request.onloadend = function () {
      var response = JSON.parse(request.responseText);

      console.log(response);
      if(response.result == 'found') {
        var token = response.token;

        this.setToken(token);
        this.isSigned = true;
      } else {
        console.log('Not logged yet.');
      }
    }
}

El problema es que no puedo acceder a la función setToken desde el contexto de la función "request.onloadend", probablemente porque perdí la referencia a "this".

¿Cuál es una solución de este problema? ¿Puedo pasar de alguna manera la variante "this" al contexto de esta función?

¡Gracias!

Respuestas a la pregunta(6)

Su respuesta a la pregunta