Dataford
Interview QuestionsInterview GuidesExperiencesMock InterviewsPricing
Get started

Debugging Async with setTimeout

MediumCoding00:00
Practice interviewer
In session
5 left
00:00

Your question is Debugging Async with setTimeout. Take a moment with it on the right.

Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).

You need to log in / sign up to chat or submit.

Problem

UiPath's automation dashboard has a status widget that retries a flaky health check with setTimeout. A frontend engineer is asked to trace through the console output before touching the retry logic.

console.log("start");

setTimeout(() => {
  console.log("timeout 0ms");
}, 0);

Promise.resolve().then(() => {
  console.log("promise 1");
});

function scheduleRetry(attempt) {
  if (attempt > 2) {
    console.log("done retrying");
    return;
  }
  console.log("attempt " + attempt);
  setTimeout(() => scheduleRetry(attempt + 1), 0);
}

scheduleRetry(1);

Promise.resolve().then(() => {
  console.log("promise 2");
});

console.log("end");

What is the exact order this logs to the console? Explain what runs first, what gets queued, and when each callback actually executes.