diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index 433ae3b..e850aad 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -200,7 +200,6 @@
     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_sending2, true);
   }
 
   ~EndToEndTest() override { QuicRecyclePort(server_address_.port()); }
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 27b2664..3b7eb17 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -2904,8 +2904,7 @@
       ++stats_.packets_discarded;
       return true;
     case COALESCE:
-      QUIC_BUG_IF(!version().CanSendCoalescedPackets());
-      QUIC_BUG_IF(fix_out_of_order_sending_ && coalescing_done_);
+      QUIC_BUG_IF(!version().CanSendCoalescedPackets() || coalescing_done_);
       if (!coalesced_packet_.MaybeCoalescePacket(
               *packet, self_address(), send_to_address,
               helper_->GetStreamSendBufferAllocator(),
@@ -2953,10 +2952,8 @@
       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;
-      }
+      // Stop using coalescer 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
@@ -3403,16 +3400,9 @@
 }
 
 QuicPacketBuffer QuicConnection::GetPacketBuffer() {
-  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.
+  if (version().CanSendCoalescedPackets() && !coalescing_done_) {
+    // Do not use writer's packet buffer for coalesced packets which may
+    // contain multiple QUIC packets.
     return {nullptr, nullptr};
   }
   return writer_->GetNextWriteLocation(self_address().host(), peer_address());
@@ -5291,13 +5281,10 @@
       // packet (except MTU discovery packet).
       return COALESCE;
     }
-    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.
-        return COALESCE;
-      }
+    if (coalesced_packet_.length() > 0) {
+      // If the coalescer is not empty, let this packet go through coalescer
+      // to avoid potential out of order sending.
+      return COALESCE;
     }
   }
   if (!buffered_packets_.empty() || HandleWriteBlocked()) {
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index bd29005..b2ce39f 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -1966,9 +1966,6 @@
   const bool fix_missing_initial_keys_ =
       GetQuicReloadableFlag(quic_fix_missing_initial_keys2);
 
-  const bool fix_out_of_order_sending_ =
-      GetQuicReloadableFlag(quic_fix_out_of_order_sending2);
-
   const bool encrypted_control_frames_;
 
   const bool use_encryption_level_context_;
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 0a3a97f..4814f41 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -38,7 +38,6 @@
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_encrypted_control_frames, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_extract_x509_subject_using_certificate_view, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_missing_initial_keys2, true)
-QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_out_of_order_sending2, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_pto_pending_timer_count, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_undecryptable_packets2, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_fix_willing_and_able_to_write2, true)
