Синхронный GM_xmlhttpRequest в цикле возвращает результат только на следующей итерации

Я запускаю GM_xmlhttpRequest в таком цикле:

for (var i = 0; i < entries.length; i++) {
    var entryName = entries[i];
    var requestResult = '';
    GM_xmlhttpRequest({
        method: 'GET',
        url: 'http://example.net/api/search.xml?q=' + entryName,
        synchronous: true,
        onload: function (response) {
            if (response.status == 200) {
                responseXML = new DOMParser().parseFromString(response.responseText, "text/xml");
                requestResult = responseXML.evaluate('//entry[id/text() = "' + entryIndex + '"]/start_date/text()',
                        responseXML, null, XPathResult.STRING_TYPE, null).stringValue;
            } else {
                requestResult = 'request error';
            }
        }
    });
    console.log(entryName + ' ' + requestResult);
}

Это работает нормально, но проблема в том, что ожидаемые результаты смещаются на одну строку вниз:

entryName1
entryName2  result1
entryName3  result2
entryName4  result3
...         ...

Итак, как я вижу, синхронный onload моего GM_xmlhttpRequest вызывается на следующей итерации цикла, но с параметром url из предыдущей итерации. Как я могу это исправить?


person ttaaoossuuuu    schedule 16.09.2015    source источник