Fetch vs. AjaxCall

¿Cuál es la diferencia entre AJAX típico y Fetch API?

Considere este escenario:

function ajaxCall(url) {
  return new Promise(function(resolve, reject) {
    var req = new XMLHttpRequest();
    req.open('GET', url);

    req.onload = function() {
      if (req.status == 200) {
        resolve(req.response);
      } else {
        reject(Error(req.statusText));
      }
    };
    req.onerror = function() {
      reject(Error("Network Error"));
    };
    req.send();
  });
}

ajaxCall('www.testSite').then(x => {
  console.log(x)
}) // returns html of site

fetch('www.testSite').then(x => {
  console.log(x)
}) // returns object with information about call

Esto es lo que elfetch devolución de llamada:

Response {type: "cors", url: "www.testSite", status: 200, ok: true, statusText: "OK"…}

¿Por qué devuelve cosas diferentes?

¿Hay alguna manera defetch para devolver lo mismo que una llamada típica de AJAX?

Respuestas a la pregunta(2)

Su respuesta a la pregunta