diff --git a/quic/core/quic_crypto_server_handshaker.h b/quic/core/quic_crypto_server_handshaker.h
index c7b5a69..787f029 100644
--- a/quic/core/quic_crypto_server_handshaker.h
+++ b/quic/core/quic_crypto_server_handshaker.h
@@ -204,9 +204,7 @@
   // Contains any source address tokens which were present in the CHLO.
   SourceAddressTokens previous_source_address_tokens_;
 
-  // True if client attempts 0-rtt handshake (which can succeed or fail). If
-  // stateless rejects are used, this variable will be false for the stateless
-  // rejected connection and true for subsequent connections.
+  // True if client attempts 0-rtt handshake (which can succeed or fail).
   bool zero_rtt_attempted_;
 
   // Size of the packet containing the most recently received CHLO.
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc
index b7b45e8..e95ee98 100644
--- a/quic/core/quic_dispatcher_test.cc
+++ b/quic/core/quic_dispatcher_test.cc
@@ -1031,32 +1031,6 @@
                 PACKET_4BYTE_PACKET_NUMBER, 1);
 }
 
-// Enables mocking of the handshake-confirmation for stateless rejects.
-class MockQuicCryptoServerStream : public QuicCryptoServerStream {
- public:
-  MockQuicCryptoServerStream(const QuicCryptoServerConfig& crypto_config,
-                             QuicCompressedCertsCache* compressed_certs_cache,
-                             QuicServerSessionBase* session,
-                             QuicCryptoServerStream::Helper* helper)
-      : QuicCryptoServerStream(&crypto_config,
-                               compressed_certs_cache,
-                               session,
-                               helper),
-        handshake_confirmed_(false) {}
-  MockQuicCryptoServerStream(const MockQuicCryptoServerStream&) = delete;
-  MockQuicCryptoServerStream& operator=(const MockQuicCryptoServerStream&) =
-      delete;
-
-  void set_handshake_confirmed_for_testing(bool handshake_confirmed) {
-    handshake_confirmed_ = handshake_confirmed;
-  }
-
-  bool handshake_confirmed() const override { return handshake_confirmed_; }
-
- private:
-  bool handshake_confirmed_;
-};
-
 // Verify the stopgap test: Packets with truncated connection IDs should be
 // dropped.
 class QuicDispatcherTestStrayPacketConnectionId : public QuicDispatcherTest {};
@@ -1391,7 +1365,6 @@
   MarkSession1Deleted();
 }
 
-// A dispatcher whose stateless rejector will always ACCEPTs CHLO.
 class BufferedPacketStoreTest : public QuicDispatcherTest {
  public:
   BufferedPacketStoreTest()
diff --git a/quic/quartc/quartc_crypto_helpers.cc b/quic/quartc/quartc_crypto_helpers.cc
index 4653000..dc7b973 100644
--- a/quic/quartc/quartc_crypto_helpers.cc
+++ b/quic/quartc/quartc_crypto_helpers.cc
@@ -78,8 +78,7 @@
     QuicTransportVersion version,
     QuicConnectionId connection_id) const {
   // TODO(b/124399417):  Request a zero-length connection id here when the QUIC
-  // server perspective supports it.  Right now, the stateless rejector requires
-  // a connection id that is not the same as the client-chosen connection id.
+  // server perspective supports it.
   return QuicUtils::CreateRandomConnectionId();
 }
 
diff --git a/quic/tools/quic_simple_crypto_server_stream_helper.h b/quic/tools/quic_simple_crypto_server_stream_helper.h
index f8a58f6..3480776 100644
--- a/quic/tools/quic_simple_crypto_server_stream_helper.h
+++ b/quic/tools/quic_simple_crypto_server_stream_helper.h
@@ -11,7 +11,7 @@
 namespace quic {
 
 // Simple helper for server crypto streams which generates a new random
-// connection ID for stateless rejects.
+// connection ID for rejects.
 class QuicSimpleCryptoServerStreamHelper
     : public QuicCryptoServerStream::Helper {
  public:
diff --git a/quic/tools/quic_spdy_client_base.h b/quic/tools/quic_spdy_client_base.h
index 7481bfa..3de7186 100644
--- a/quic/tools/quic_spdy_client_base.h
+++ b/quic/tools/quic_spdy_client_base.h
@@ -39,13 +39,9 @@
         const std::string& response_body) = 0;
   };
 
-  // The client uses these objects to keep track of any data to resend upon
-  // receipt of a stateless reject.  Recall that the client API allows callers
-  // to optimistically send data to the server prior to handshake-confirmation.
-  // If the client subsequently receives a stateless reject, it must tear down
-  // its existing session, create a new session, and resend all previously sent
-  // data.  It uses these objects to keep track of all the sent data, and to
-  // resend the data upon a subsequent connection.
+  // A piece of data that can be sent multiple times. For example, it can be a
+  // HTTP request that is resent after a connect=>version negotiation=>reconnect
+  // sequence.
   class QuicDataToResend {
    public:
     // |headers| may be null, since it's possible to send data without headers.
