diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc
index 6a0081a..bd12a90 100644
--- a/quic/core/http/end_to_end_test.cc
+++ b/quic/core/http/end_to_end_test.cc
@@ -460,8 +460,6 @@
       EXPECT_EQ(client_stats.packets_received, client_stats.packets_processed);
     }
 
-    EXPECT_EQ(0, client_->client()->num_stateless_rejects_received());
-
     server_thread_->Pause();
     QuicConnectionStats server_stats = GetServerConnection()->GetStats();
     if (!had_packet_loss) {
diff --git a/quic/tools/quic_client_base.cc b/quic/tools/quic_client_base.cc
index eb4ac14..9cecffe 100644
--- a/quic/tools/quic_client_base.cc
+++ b/quic/tools/quic_client_base.cc
@@ -35,7 +35,6 @@
       alarm_factory_(alarm_factory),
       supported_versions_(supported_versions),
       initial_max_packet_length_(0),
-      num_stateless_rejects_received_(0),
       num_sent_client_hellos_(0),
       connection_error_(QUIC_NO_ERROR),
       connected_or_attempting_connect_(false),
@@ -45,7 +44,6 @@
 
 bool QuicClientBase::Initialize() {
   num_sent_client_hellos_ = 0;
-  num_stateless_rejects_received_ = 0;
   connection_error_ = QUIC_NO_ERROR;
   connected_or_attempting_connect_ = false;
 
@@ -265,9 +263,6 @@
 int QuicClientBase::GetNumReceivedServerConfigUpdates() {
   // If we are not actively attempting to connect, the session object
   // corresponds to the previous connection and should not be used.
-  // We do not need to take stateless rejects into account, since we
-  // don't expect any scup messages to be sent during a
-  // statelessly-rejected connection.
   return !connected_or_attempting_connect_
              ? 0
              : GetNumReceivedServerConfigUpdatesFromSession();
diff --git a/quic/tools/quic_client_base.h b/quic/tools/quic_client_base.h
index 13f7c94..fb15b86 100644
--- a/quic/tools/quic_client_base.h
+++ b/quic/tools/quic_client_base.h
@@ -149,31 +149,17 @@
     initial_max_packet_length_ = initial_max_packet_length;
   }
 
-  int num_stateless_rejects_received() const {
-    return num_stateless_rejects_received_;
-  }
-
-  // The number of client hellos sent, taking stateless rejects into
-  // account.  In the case of a stateless reject, the initial
-  // connection object may be torn down and a new one created.  The
-  // user cannot rely upon the latest connection object to get the
-  // total number of client hellos sent, and should use this function
-  // instead.
+  // The number of client hellos sent.
   int GetNumSentClientHellos();
 
   // Gather the stats for the last session and update the stats for the overall
   // connection.
   void UpdateStats();
 
-  // The number of server config updates received.  We assume no
-  // updates can be sent during a previously, statelessly rejected
-  // connection, so only the latest session is taken into account.
+  // The number of server config updates received.
   int GetNumReceivedServerConfigUpdates();
 
-  // Returns any errors that occurred at the connection-level (as
-  // opposed to the session-level).  When a stateless reject occurs,
-  // the error of the last session may not reflect the overall state
-  // of the connection.
+  // Returns any errors that occurred at the connection-level.
   QuicErrorCode connection_error() const;
   void set_connection_error(QuicErrorCode connection_error) {
     connection_error_ = connection_error;
@@ -236,9 +222,7 @@
   // Extract the number of sent client hellos from the session.
   virtual int GetNumSentClientHellosFromSession() = 0;
 
-  // The number of server config updates received.  We assume no
-  // updates can be sent during a previously, statelessly rejected
-  // connection, so only the latest session is taken into account.
+  // The number of server config updates received.
   virtual int GetNumReceivedServerConfigUpdatesFromSession() = 0;
 
   // If this client supports buffering data, resend it.
@@ -329,11 +313,6 @@
   // zero, the default is used.
   QuicByteCount initial_max_packet_length_;
 
-  // The number of stateless rejects received during the current/latest
-  // connection.
-  // TODO(wub): Remove this.
-  int num_stateless_rejects_received_;
-
   // The number of hellos sent during the current/latest connection.
   int num_sent_client_hellos_;
 
@@ -341,9 +320,8 @@
   // opposed to that associated with the last session object).
   QuicErrorCode connection_error_;
 
-  // True when the client is attempting to connect or re-connect the session (in
-  // the case of a stateless reject).  Set to false  between a call to
-  // Disconnect() and the subsequent call to StartConnect().  When
+  // True when the client is attempting to connect.  Set to false between a call
+  // to Disconnect() and the subsequent call to StartConnect().  When
   // connected_or_attempting_connect_ is false, the session object corresponds
   // to the previous client-level connection.
   bool connected_or_attempting_connect_;
