Confesso di avere le idee un po' confuse sull'oggetto XMLHttpRequest & parenti e affini.

Ho questo codice:
codice:
function processBarcode(bc) {
                    var e = document.getElementById("ddlconti");
                    var conto = e.options[e.selectedIndex].value;
                    
                    var verificato = (controlla(conto, bc) == 'True');
                 
                    if (verificato) {
                        //mostro labels
                        document.getElementById("matri").display = "block";
                        document.getElementById("scans").innerHTML += "<div>" + bc + "</div>";
                        document.getElementById("bottoni").style.display = "block";
                    } else {
                        alert('MATRICOLA NON ACCETTATA!');
                    }
                }

               
                //la funzione seguente restituisce una stringa con true o false se la matricola appartiene al conto indicato
                function controlla(c, m) {
                    var httpRequest = new XMLHttpRequest();
                    httpRequest.open('POST', "maincheck.ashx?c="+c+"&m="+m);
                    httpRequest.send();
                    //httpRequest.responseType = 'text'
                    return httpRequest.responseText;
                }
La funzione processbarcode lancia la function controlla che, via XMLHttpRequest , interroga la pagina maincheck.ashx passandole due parametri in querystring.
A seconda dell'esito della maincheck (che fa un response.write("True") oppure no) poi deve fare delle altre cose oppure mostrarmi l'alert MATRICOLA NON ACCETTATA!
Ecco, mi ritorna sempre quell'alert anche se ho verificato che la maincheck con i parametri che le passo mi scriverebbe un bel 'True'...

Penso di sbagliare qualcosa ma non so cosa.
Ho ipotizzato che il problema sia che la XMLHttpRequest è asincrona e questo manda in cacca il resto della processbarcode: potrei metterla sincrona ma ho letto che è da delinquenti... e allora come ne esco?
C'è un paziente mentore che mi indichi la via?