#28907 [Bug]: S3 batch flush drops queued logs before uploads finish
### Check for existing issues
- [X] I have searched the existing issues and checked that my issue is not a duplicate.
### What happened?
`S3Logger.async_send_batch` schedules one upload per queued event with `asyncio.create_task` and returns immediately without awaiting any of them. `CustomBatchLogger.flush_queue` then calls `self.log_queue.clear()` as soon as `async_send_batch` returns, and `async_upload_data_to_s3` catches upload exceptions silently. As a result, if an upload task fails or is cancelled (process shutdown, network error, AWS throttling) the event is gone from the queue and never retried, permanently dropping audit/log entries.
**Observed:** `async_send_batch` does `for payload in self.log_queue: asyncio.create_task(self.async_upload_data_to_s3(payload))` and returns. `flush_queue` sees the function return and runs `self.log_queue.clear()` unconditionally (since `preserve_events_added_during_flush = False`). The fire-and-forget tasks may complete later, fail, or be cancelled — failures are only logged via `verbose_logger.exception(...)` and `handle_callback_failure(...)`. There is no path that returns the failed event to the queue.
**Expected:** A successful fl…