Worker to set cookie and redirect (with location header) based on country doesnt actually redirect

I was just using the nice Response.redirect(url) to redirect based on country and it works great. However I wanted to pair this with setting a cookie so that this only happens once for the user per session. After the initial redirect to their country specific homepage, they can then view any country homepage they would like. Ive tried so many attempts to no avail. I am setting the cookie and the location header but that does not cause a redirect. I also tried fetching a new request to the url i want to redirect to and passing that response through. That does work, but the url doesnt change since I am essentially cloaking at the point.

const countryMap = {
  DE: 'https://example.com/de',
  BE: 'https://example.com/be',
  US: 'https://example.com/redirect-test',
};

async function handleRequest(request) {
  /**
   * Response properties are immutable. To change them, construct a new
   * Response and pass modified status or statusText in the ResponseInit
   * object. Response headers can be modified through the headers `set` method.
   */
  const country = request.cf.country;

  let cookies = request.headers.get('Cookie') || ""
  if (cookies.includes("countryRedirect=true")) {
    /** User has already been redirected before to their
     * Country specific homepage, so now just let them through to
     * the USA homepage if they so desire.
     */
    return fetch(request)
  }

if (country != null && country in countryMap) {
    const url = countryMap[country];
    const newCookie = "countryRedirect=true; SameSite=None; Domain=example.com"
    const ogResponse = await fetch(request);
    let response = new Response(ogResponse.body, ogResponse.headers)
    response.headers.set("Set-Cookie", newCookie);
    response.headers.set("Location", url);
    response.headers.set("Status", 302)
    return response;
  } else {
    return fetch(request);
  }

}

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});