Não sou expert, nem tampouco um bom programador (me considero razoável), mas o XMLHttpRequest é um objeto utilizado para fazer requisições HTTP a um servidor e obter dados em formato JSON, XML ou outros formatos. Para lidar com o assincronismo dessas requisições, podemos utilizar Promises, que são objetos utilizados para representar valores que podem estar disponíveis imediatamente, no futuro ou nunca. Para fazer uma requisição com XMLHttpRequest, podemos utilizar o método open para configurar a requisição, o método send para enviá-la e o evento onload para receber a resposta do servidor. Podemos criar uma Promise que resolve quando a resposta é recebida e rejeita em caso de erro. Exemplo de código para fazer uma requisição utilizando XMLHttpRequest e lidar com Promises:
function fazerRequisicao(url) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.onload = () => { if (xhr.status === 200) { resolve(xhr.response); } else { reject(new Error(xhr.statusText)); } }; xhr.onerror = () => reject(new Error('Erro na requisição')); xhr.send(); }); }