Среда: fetch есть и в Node/современных runtime; XHR — браузерный.
const r = awaitfetch('/api');
if (!r.ok) thrownewError('HTTP ' + r.status);
Итог
Для нового кода почти всегда fetch. XHR ещё встречается в легаси и когда нужен простой upload progress.
На собеседовании
Ожидают не заученную таблицу, а умение связать концепцию с багом из практики: что сломается, если выбрать неправильный вариант, и какой код вы напишете в реальном PR. Короткий пример и граничный случай обычно ценятся выше длинной теории.
Чем `XMLHttpRequest` отличается от `fetch()`? · Sobeso