XHR responseText é uma string vazia

Página HTML:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>xhr</title>
</head>
<body>
    <script>
        var xhr_test = new XMLHttpRequest();
        xhr_test.open("GET","xhrtest",true);
        xhr_test.send();
        alert(xhr_test.responseText);
    </script>
</body>
</html>

O arquivo main.py:

import webapp2
from handlers import cookies,pages
application = webapp2.WSGIApplication([
        ('/xhr',pages.XHR),
        ('/xhrtest', cookies.XHRTest)
        ],
            debug=True)

Os manipuladores de solicitação:

class XHRTest(webapp2.RequestHandler):
    def get(self):
        self.response.write('0')

e,

class XHR(webapp2.RequestHandler):
    def get(self):
        f = open('static/html/xhr.html','r')
        self.response.write(f.read())

Agora, quando eu encontrei o URLlocalhost:8080/xhrtest o navegador mostra imediatamente a resposta0 como o conteúdo da página.

Acertando o URLlocalhost:8080/xhr que indiretamente atinge/xhrtest, aparece uma string vazia na caixa de alerta (o responseText é uma string vazia) mas checando a aba de resposta do chrome sob a aba network, eu posso ver que a resposta da requisição é0.

Então, porque é quexhr_test.responseText não é capaz de exibir a mesma resposta?

questionAnswers(1)

yourAnswerToTheQuestion