setInterval for promises and async functions. Support graceful shutdown and prevent multiple executions from overlapping in time.