codice:
if(!$(document).data(urlList[i])){
		$.ajax({
			url: urlList[i],
                        async: false
		}).done(function(msg) {
                        $(document).data(urlList[i],true); 
			checkIndex(urlList, callback, i);
		});
	}
	else { checkIndex(urlList, callback, i); }
è necessario impostare la chiave a true per fare in modo che nelle sucessive chiamate con chiave uguale non entri nell'if. Inoltre imposta le chiamate come sincrone. Ho fatto un paio di test veloci e sembra sia propio questo il problema