обясните поведение аякс в JS

Духовность™

Продвинутый новичок
обясните поведение аякс в JS

Есть тривиальный пример. Функция, которую я хотел адаптировать как универсальный механизм для получения объекта ответа. Хренушки. В упор не понимаю почему, но в объекте XMLHttpRequest не сохраняется результат выполнения запроса. В комментариях в коде всё написано:

PHP:
// отсылает GET-запрос по url
function ajax_send(url)
{
    // создаем объект XMLHTTPRequest
    // это обычная универсальная функция, коих в сети полно
    var req = ajax_createRequestObject(); 

    req.onreadystatechange = function()
    {
        if (req.readyState == 4)
        {
            if (req.status == 200)
            { 
                 // ВОТ ТУТ req.responseText возвращает XML  в виде строки 
                 alert(req.responseText);
                // или, например, объект XmlDomDocument
                alert(req.responseXML);
            }
            else
            {
                alert("Error XMLHttpRequest");
                return false;
            }
        }
    }

    req.open('GET', url, true);
    req.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    req.send(null);

    // А ВОТ ТУТ req.responseText - пустая строка
    alert(req.responseText)
    // а тут null - объекта нет
    alert(req.responseXML);
}
собственно, хотел возвращать этот объект req XMLHttpRequest из этой функции и брать содержимое XML через req.responseXML. А он, как видно из кода, в null.

Я так понимаю, это как-то связано с синхронностью/ассинхроностью?
 
Сверху