Как общаться между вкладками браузера js?
https://developer.mozilla.org/ru/docs/Web/API/Wind...

Получаешь токен, пихаешь в localStorage, при этом все остальные вкладки получают событие storage. А значит, просто слушая этот ивент, ты сможешь обновить токен где тебе надо, на всех вкладках.
в похожей ситуации я реализовывал семафор следующим способом
if(localstorage['имя_семафора']++>1)
{ // значит этот семафор уже кто то занял,
  localstorage['имя_семафора']--;
  //  ждем некоторое время и повторяем попытку
}  else
{ // никто семафор не занял можно работать
  ...
  // по окончанию работы семафор надо освободить
  localstorage['имя_семафора']--;
}смысл в том что localstorage[]++ это атомарная операция (вот в этом месте я скорее всего не прав), а благодаря тому что единственная опасная операция, которая могла бы вклиниться между работай с localstorage и if - это --, и она проихойдет когда семафор и так должен освободиться, т.е. проблем это не создаст.

p.s. почему говорю семафор а не мьютекс, потому что можно сравнивать не только с 1 но и большим числом - это определит, сколько одновременно можно ресурс занимать
p.p.s. в интернете гуляет реализацию мьютекс на javascrit как раз на localstorage но она какая то переусложненная и я не понимаю зачем
если кто то по умнее, объясните пожалуйста