A Function that is marked with async may contain the await keyword. await means that the current JavaScript thread is paused, and will only resume when the promise it is waiting on resolves. So at every await, other JavaScript code might be run in the meanwhile.
When using .then() to handle a promise, the current JavaScript thread immediately resumes below the .then() and .catch() chain, and in this case, finishes soon. Now other JavaScript code might be run. Later, the function in .then() will be called.
In this example, the tickTock function is called every second through setInterval().