Хорош ли такой шаблон работы с AJAX?
проще так
https://learn.javascript.ru/fetch

let response = await fetch(url);

if (response.ok) { // если HTTP-статус в диапазоне 200-299
  // получаем тело ответа (см. про этот метод ниже)
  let json = await response.json();
} else {
  alert("Ошибка HTTP: " + response.status);
}
Это уже архаизм, к тому дикий велосипед. Зачем 100500 раз опять пытаться писать сырую обертку над XMLHttpRequest? Берите fetch или какую то стороннюю библиотеку, если там надо что то, чего у fetch нету (типа прогресса upload) и вперед.