diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index c834d7b..50b7904 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -200,7 +200,7 @@
     AddToCache("/bar", 200, kBarResponseBody);
     // Enable fixes for bugs found in tests and prod.
     SetQuicRestartFlag(quic_enable_zero_rtt_for_tls_v2, true);
-    SetQuicReloadableFlag(quic_fix_out_of_order_sending, true);
+    SetQuicReloadableFlag(quic_fix_out_of_order_sending2, true);
   }
 
   ~EndToEndTest() override { QuicRecyclePort(server_address_.port()); }
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index bb7dd47..876e997 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -2717,6 +2717,7 @@
       return true;
     case COALESCE:
       QUIC_BUG_IF(!version().CanSendCoalescedPackets());
+      QUIC_BUG_IF(fix_out_of_order_sending_ && coalescing_done_);
       if (!coalesced_packet_.MaybeCoalescePacket(
               *packet, self_address(), send_to_address,
               helper_->GetStreamSendBufferAllocator(),
@@ -2764,6 +2765,10 @@
       buffered_packets_.emplace_back(*packet, self_address(), send_to_address);
       break;
     case SEND_TO_WRITER:
+      if (fix_out_of_order_sending_ && !coalescing_done_) {
+        // Stop using coalsecer from now on.
+        coalescing_done_ = true;
+      }
       // At this point, packet->release_encrypted_buffer is either nullptr,
       // meaning |packet->encrypted_buffer| is a stack buffer, or not-nullptr,
       /// meaning it's a writer-allocated buffer. Note that connectivity probing
@@ -3097,7 +3102,14 @@
 }
 
 QuicPacketBuffer QuicConnection::GetPacketBuffer() {
-  if (version().CanSendCoalescedPackets() && !IsHandshakeConfirmed()) {
+  if (fix_out_of_order_sending_) {
+    if (version().CanSendCoalescedPackets() && !coalescing_done_) {
+      // Do not use writer's packet buffer for coalesced packets which may
+      // contain
+      // multiple QUIC packets.
+      return {nullptr, nullptr};
+    }
+  } else if (version().CanSendCoalescedPackets() && !IsHandshakeConfirmed()) {
     // Do not use writer's packet buffer for coalesced packets which may contain
     // multiple QUIC packets.
     return {nullptr, nullptr};
@@ -4806,14 +4818,15 @@
     DCHECK(!is_mtu_discovery);
     return LEGACY_VERSION_ENCAPSULATE;
   }
-  if (version().CanSendCoalescedPackets() && !is_mtu_discovery) {
+  if (version().CanSendCoalescedPackets() && !coalescing_done_ &&
+      !is_mtu_discovery) {
     if (!IsHandshakeConfirmed()) {
       // Before receiving ACK for any 1-RTT packets, always try to coalesce
       // packet (except MTU discovery packet).
       return COALESCE;
     }
-    if (GetQuicReloadableFlag(quic_fix_out_of_order_sending)) {
-      QUIC_RELOADABLE_FLAG_COUNT(quic_fix_out_of_order_sending);
+    if (fix_out_of_order_sending_) {
+      QUIC_RELOADABLE_FLAG_COUNT(quic_fix_out_of_order_sending2);
       if (coalesced_packet_.length() > 0) {
         // If the coalescer is not empty, let this packet go through coalescer
         // to avoid potential out of order sending.
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index 994a8df..3eec673 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -1783,8 +1783,14 @@
   // True if AckFrequencyFrame is supported.
   bool can_receive_ack_frequency_frame_ = false;
 
+  // Indicate whether coalescing is done.
+  bool coalescing_done_ = false;
+
   const bool fix_missing_initial_keys_ =
       GetQuicReloadableFlag(quic_fix_missing_initial_keys);
+
+  const bool fix_out_of_order_sending_ =
+      GetQuicReloadableFlag(quic_fix_out_of_order_sending2);
 };
 
 }  // namespace quic
