This sounds like a good use case for Promise.all() and fetch:
const first = fetch(endpoint1);
const rest = Promise.all([
fetch(e2), fetch(e3), fetch(e4),
]);
// cancel here
const json1 = await first.json();
const json234 = await rest.json();
While native promises can't cancel on their own, with a library like Bluebird you can get that functionality.