flushQueue now uses removeAt(0) per delivered entry instead of all-or-nothing queue.clear(). Undelivered entries survive after partial failure.
flushQueue now uses removeAt(0) per delivered entry instead of all-or-nothing queue.clear(). Undelivered entries survive after partial failure.