diff --git a/lib/src/usage_impl.dart b/lib/src/usage_impl.dart
index 5965461..872e481 100644
--- a/lib/src/usage_impl.dart
+++ b/lib/src/usage_impl.dart
@@ -83,7 +83,7 @@
 
   late Future<void>? Function() _batchingDelay;
   final Queue<String> _batchedEvents = Queue<String>();
-  Future<void>? _nextSending;
+  bool _isSendingScheduled = false;
 
   late final String _url;
   late final String _batchingUrl;
@@ -271,15 +271,16 @@
     _sendController.add(eventArgs);
     _batchedEvents.add(postHandler.encodeHit(eventArgs));
 
-    if (_nextSending == null) {
+    if (!_isSendingScheduled) {
       final delay = _batchingDelay();
       if (delay == null) {
         _trySendBatches(completer);
       } else {
+        _isSendingScheduled = true;
         unawaited(delay.then((value) {
+          _isSendingScheduled = false;
           _trySendBatches(completer);
         }));
-        _nextSending = completer.future.then((_) => _nextSending = null);
       }
     }
     return completer.future;
@@ -290,7 +291,7 @@
   // Send no more than 16K per batch.
   static const _maxBytesPerBatch = 16000;
 
-  void _trySendBatches(Completer completer) {
+  void _trySendBatches(Completer<void> completer) {
     final futures = <Future>[];
     while (_batchedEvents.isNotEmpty) {
       final batch = <String>[];
@@ -308,9 +309,10 @@
         final future = postHandler.sendPost(
             batch.length == 1 ? _url : _batchingUrl, batch);
         _recordFuture(future);
+        futures.add(future);
       }
     }
-    Future.wait(futures).then((_) => completer.complete());
+    completer.complete(Future.wait(futures).then((_) {}));
   }
 
   void _recordFuture(Future f) {
