BackgroundService silently dies if an exception escapes.
Rule
Always wrap execution loops.
while (!stoppingToken.IsCancellationRequested)
{
try { await DoWork(); }
catch (Exception ex) { Log(ex); }
}
Why
Unhandled exceptions kill the worker.
