Do not enforce push promise arrive in order in http3. client side only, not protected.

PiperOrigin-RevId: 323047790
Change-Id: Ie79628db689ab7b09898da79e23607981604699d
diff --git a/quic/core/http/quic_spdy_client_session_base.cc b/quic/core/http/quic_spdy_client_session_base.cc
index 9bd7695..46305a6 100644
--- a/quic/core/http/quic_spdy_client_session_base.cc
+++ b/quic/core/http/quic_spdy_client_session_base.cc
@@ -65,7 +65,10 @@
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
     return;
   }
-  if (promised_stream_id !=
+  // In HTTP3, push promises are received on individual streams, so they could
+  // be arrive out of order.
+  if (!VersionUsesHttp3(transport_version()) &&
+      promised_stream_id !=
           QuicUtils::GetInvalidStreamId(transport_version()) &&
       largest_promised_stream_id_ !=
           QuicUtils::GetInvalidStreamId(transport_version()) &&
diff --git a/quic/core/http/quic_spdy_client_session_test.cc b/quic/core/http/quic_spdy_client_session_test.cc
index 2500c97..1c0f868 100644
--- a/quic/core/http/quic_spdy_client_session_test.cc
+++ b/quic/core/http/quic_spdy_client_session_test.cc
@@ -677,11 +677,13 @@
                                 QuicHeaderList());
   associated_stream_id_ +=
       QuicUtils::StreamIdDelta(connection_->transport_version());
-  EXPECT_CALL(*connection_,
-              CloseConnection(QUIC_INVALID_STREAM_ID,
-                              "Received push stream id lesser or equal to the"
-                              " last accepted before",
-                              _));
+  if (!VersionUsesHttp3(session_->transport_version())) {
+    EXPECT_CALL(*connection_,
+                CloseConnection(QUIC_INVALID_STREAM_ID,
+                                "Received push stream id lesser or equal to the"
+                                " last accepted before",
+                                _));
+  }
   session_->OnPromiseHeaderList(associated_stream_id_, promised_stream_id_, 0,
                                 QuicHeaderList());
 }