diff --git a/quiche/quic/core/quic_dispatcher.cc b/quiche/quic/core/quic_dispatcher.cc
index dfa4171..49ace1c 100644
--- a/quiche/quic/core/quic_dispatcher.cc
+++ b/quiche/quic/core/quic_dispatcher.cc
@@ -18,6 +18,7 @@
 #include <utility>
 #include <vector>
 
+#include "absl/base/attributes.h"
 #include "absl/base/macros.h"
 #include "absl/base/optimization.h"
 #include "absl/container/flat_hash_set.h"
@@ -444,7 +445,18 @@
   }
 
   if (buffered_packets_.HasChloForConnection(server_connection_id)) {
-    BufferEarlyPacket(packet_info);
+    EnqueuePacketResult rs = buffered_packets_.EnqueuePacket(
+        packet_info,
+        /*parsed_chlo=*/std::nullopt, /*connection_id_generator=*/nullptr);
+    switch (rs) {
+      case EnqueuePacketResult::SUCCESS:
+        break;
+      case EnqueuePacketResult::TOO_MANY_PACKETS:
+        ABSL_FALLTHROUGH_INTENDED;
+      case EnqueuePacketResult::TOO_MANY_CONNECTIONS:
+        OnBufferPacketFailure(rs, packet_info.destination_connection_id);
+        break;
+    }
     return true;
   }
 
@@ -644,7 +656,18 @@
       // This packet does not contain a full CHLO. It could be a 0-RTT
       // packet that arrived before the CHLO (due to loss or reordering),
       // or it could be a fragment of a multi-packet CHLO.
-      BufferEarlyPacket(packet_info);
+      EnqueuePacketResult rs = buffered_packets_.EnqueuePacket(
+          packet_info,
+          /*parsed_chlo=*/std::nullopt, /*connection_id_generator=*/nullptr);
+      switch (rs) {
+        case EnqueuePacketResult::SUCCESS:
+          break;
+        case EnqueuePacketResult::TOO_MANY_PACKETS:
+          ABSL_FALLTHROUGH_INTENDED;
+        case EnqueuePacketResult::TOO_MANY_CONNECTIONS:
+          OnBufferPacketFailure(rs, packet_info.destination_connection_id);
+          break;
+      }
       return result;
     }
 
@@ -668,7 +691,18 @@
                               &alpn_extractor,
                               packet_info.destination_connection_id.length())) {
     // Buffer non-CHLO packets.
-    BufferEarlyPacket(packet_info);
+    EnqueuePacketResult rs = buffered_packets_.EnqueuePacket(
+        packet_info,
+        /*parsed_chlo=*/std::nullopt, /*connection_id_generator=*/nullptr);
+    switch (rs) {
+      case EnqueuePacketResult::SUCCESS:
+        break;
+      case EnqueuePacketResult::TOO_MANY_PACKETS:
+        ABSL_FALLTHROUGH_INTENDED;
+      case EnqueuePacketResult::TOO_MANY_CONNECTIONS:
+        OnBufferPacketFailure(rs, packet_info.destination_connection_id);
+        break;
+    }
     return result;
   }
 
@@ -1078,17 +1112,6 @@
                                      alarm_factory_.get());
 }
 
-void QuicDispatcher::BufferEarlyPacket(const ReceivedPacketInfo& packet_info) {
-  // The connection ID generator will only be set for CHLOs, not for early
-  // packets.
-  EnqueuePacketResult rs = buffered_packets_.EnqueuePacket(
-      packet_info,
-      /*parsed_chlo=*/std::nullopt, /*connection_id_generator=*/nullptr);
-  if (rs != EnqueuePacketResult::SUCCESS) {
-    OnBufferPacketFailure(rs, packet_info.destination_connection_id);
-  }
-}
-
 void QuicDispatcher::ProcessChlo(ParsedClientHello parsed_chlo,
                                  ReceivedPacketInfo* packet_info) {
   if (GetQuicFlag(quic_allow_chlo_buffering) &&
@@ -1098,8 +1121,14 @@
                                       packet_info->destination_connection_id));
     EnqueuePacketResult rs = buffered_packets_.EnqueuePacket(
         *packet_info, std::move(parsed_chlo), &ConnectionIdGenerator());
-    if (rs != EnqueuePacketResult::SUCCESS) {
-      OnBufferPacketFailure(rs, packet_info->destination_connection_id);
+    switch (rs) {
+      case EnqueuePacketResult::SUCCESS:
+        break;
+      case EnqueuePacketResult::TOO_MANY_PACKETS:
+        ABSL_FALLTHROUGH_INTENDED;
+      case EnqueuePacketResult::TOO_MANY_CONNECTIONS:
+        OnBufferPacketFailure(rs, packet_info->destination_connection_id);
+        break;
     }
     return;
   }
diff --git a/quiche/quic/core/quic_dispatcher.h b/quiche/quic/core/quic_dispatcher.h
index b88cd0e..58e9d68 100644
--- a/quiche/quic/core/quic_dispatcher.h
+++ b/quiche/quic/core/quic_dispatcher.h
@@ -231,9 +231,6 @@
   // will be owned by the dispatcher as time_wait_list_manager_
   virtual QuicTimeWaitListManager* CreateQuicTimeWaitListManager();
 
-  // Buffers packet until it can be delivered to a connection.
-  void BufferEarlyPacket(const ReceivedPacketInfo& packet_info);
-
   // Called when |packet_info| is the last received packet of the client hello.
   // |parsed_chlo| is the parsed version of the client hello. Creates a new
   // connection and delivers any buffered packets for that connection id.
@@ -282,7 +279,7 @@
 
   bool HasBufferedPackets(QuicConnectionId server_connection_id);
 
-  // Called when BufferEarlyPacket() fail to buffer the packet.
+  // Called when failed to enqueue the packet into the buffered packet store.
   virtual void OnBufferPacketFailure(
       QuicBufferedPacketStore::EnqueuePacketResult result,
       QuicConnectionId server_connection_id);
