diff --git a/quiche/quic/qbone/qbone_client.cc b/quiche/quic/qbone/qbone_client.cc
index 5c7113a..94a62e1 100644
--- a/quiche/quic/qbone/qbone_client.cc
+++ b/quiche/quic/qbone/qbone_client.cc
@@ -73,14 +73,6 @@
   return qbone_session()->GetNumReceivedServerConfigUpdates();
 }
 
-void QboneClient::ResendSavedData() {
-  // no op.
-}
-
-void QboneClient::ClearDataToResend() {
-  // no op.
-}
-
 bool QboneClient::HasActiveRequests() {
   return qbone_session()->HasActiveRequests();
 }
diff --git a/quiche/quic/qbone/qbone_client.h b/quiche/quic/qbone/qbone_client.h
index 9dd4a74..087e279 100644
--- a/quiche/quic/qbone/qbone_client.h
+++ b/quiche/quic/qbone/qbone_client.h
@@ -51,12 +51,6 @@
   int GetNumSentClientHellosFromSession() override;
   int GetNumReceivedServerConfigUpdatesFromSession() override;
 
-  // This client does not resend saved data. This will be a no-op.
-  void ResendSavedData() override;
-
-  // This client does not resend saved data. This will be a no-op.
-  void ClearDataToResend() override;
-
   // Takes ownership of |connection|.
   std::unique_ptr<QuicSession> CreateQuicClientSession(
       const ParsedQuicVersionVector& supported_versions,
diff --git a/quiche/quic/tools/quic_client_base.cc b/quiche/quic/tools/quic_client_base.cc
index 2e834bc..39c43ad 100644
--- a/quiche/quic/tools/quic_client_base.cc
+++ b/quiche/quic/tools/quic_client_base.cc
@@ -200,9 +200,6 @@
   if (connected_or_attempting_connect()) {
     // Clear queued up data if client can not try to connect with a different
     // version.
-    if (!can_reconnect_with_different_version) {
-      ClearDataToResend();
-    }
     // Before we destroy the last session and create a new one, gather its stats
     // and update the stats for the overall connection.
     UpdateStats();
@@ -253,8 +250,6 @@
         ConnectionCloseBehavior::SEND_CONNECTION_CLOSE_PACKET);
   }
 
-  ClearDataToResend();
-
   network_helper_->CleanUpAllUDPSockets();
 }
 
diff --git a/quiche/quic/tools/quic_client_base.h b/quiche/quic/tools/quic_client_base.h
index 550e546..2b9176e 100644
--- a/quiche/quic/tools/quic_client_base.h
+++ b/quiche/quic/tools/quic_client_base.h
@@ -364,12 +364,6 @@
   // The number of server config updates received.
   virtual int GetNumReceivedServerConfigUpdatesFromSession() = 0;
 
-  // If this client supports buffering data, resend it.
-  virtual void ResendSavedData() = 0;
-
-  // If this client supports buffering data, clear it.
-  virtual void ClearDataToResend() = 0;
-
   // Takes ownership of |connection|. If you override this function,
   // you probably want to call ResetSession() in your destructor.
   // TODO(rch): Change the connection parameter to take in a
diff --git a/quiche/quic/tools/quic_spdy_client_base.h b/quiche/quic/tools/quic_spdy_client_base.h
index 191164e..503bbf8 100644
--- a/quiche/quic/tools/quic_spdy_client_base.h
+++ b/quiche/quic/tools/quic_spdy_client_base.h
@@ -124,10 +124,6 @@
       const quic::ParsedQuicVersionVector& supported_versions,
       QuicConnection* connection) override;
 
-  void ClearDataToResend() override {}
-
-  void ResendSavedData() override {}
-
   bool HasActiveRequests() override;
 
  private:
