JSFiddle - React, Tailwind, and code Playground

JavaScript

let resolvePromise;
let thePromise;

const setPromise = (resolve) => {
  resolvePromise = () => {
  	resolve();
  	thePromise = new Promise(setPromise);	
  }
}
thePromise = new Promise(setPromise);

(async () => {
	let i = 0;
  while (true) {
  	let msg = (i % 2 === 0) ? 'Tick' : 'Tock';
    document.body.innerHTML = msg;
    setTimeout(resolvePromise, 1000);
    await thePromise;
    i++;
  }
})();