diff --git a/quic/core/quic_stream.cc b/quic/core/quic_stream.cc
index 34a9464..a59bfe5 100644
--- a/quic/core/quic_stream.cc
+++ b/quic/core/quic_stream.cc
@@ -156,10 +156,6 @@
   return id_;
 }
 
-const QuicSocketAddress& PendingStream::PeerAddressOfLatestPacket() const {
-  return session_->connection()->last_packet_source_address();
-}
-
 void PendingStream::OnStreamFrame(const QuicStreamFrame& frame) {
   DCHECK_EQ(frame.stream_id, id_);
 
@@ -760,10 +756,6 @@
   sequencer_.StopReading();
 }
 
-const QuicSocketAddress& QuicStream::PeerAddressOfLatestPacket() const {
-  return session_->connection()->last_packet_source_address();
-}
-
 void QuicStream::OnClose() {
   CloseReadSide();
   CloseWriteSide();
diff --git a/quic/core/quic_stream.h b/quic/core/quic_stream.h
index 933c77a..4f13e7f 100644
--- a/quic/core/quic_stream.h
+++ b/quic/core/quic_stream.h
@@ -62,7 +62,6 @@
   void OnUnrecoverableError(QuicErrorCode error,
                             const std::string& details) override;
   QuicStreamId id() const override;
-  const QuicSocketAddress& PeerAddressOfLatestPacket() const override;
 
   // Buffers the contents of |frame|. Frame must have a non-zero offset.
   // If the data violates flow control, the connection will be closed.
@@ -158,9 +157,6 @@
   void OnUnrecoverableError(QuicErrorCode error,
                             const std::string& details) override;
 
-  // Get peer IP of the lastest packet which connection is dealing/delt with.
-  const QuicSocketAddress& PeerAddressOfLatestPacket() const override;
-
   // Called by the session when a (potentially duplicate) stream frame has been
   // received for this stream.
   virtual void OnStreamFrame(const QuicStreamFrame& frame);
diff --git a/quic/core/quic_stream_sequencer.cc b/quic/core/quic_stream_sequencer.cc
index c4c7f66..0dfc8f7 100644
--- a/quic/core/quic_stream_sequencer.cc
+++ b/quic/core/quic_stream_sequencer.cc
@@ -68,10 +68,9 @@
       byte_offset, quiche::QuicheStringPiece(data_buffer, data_len),
       &bytes_written, &error_details);
   if (result != QUIC_NO_ERROR) {
-    std::string details = quiche::QuicheStrCat(
-        "Stream ", stream_->id(), ": ", QuicErrorCodeToString(result), ": ",
-        error_details,
-        "\nPeer Address: ", stream_->PeerAddressOfLatestPacket().ToString());
+    std::string details = quiche::QuicheStrCat("Stream ", stream_->id(), ": ",
+                                               QuicErrorCodeToString(result),
+                                               ": ", error_details);
     QUIC_LOG_FIRST_N(WARNING, 50) << QuicErrorCodeToString(result);
     QUIC_LOG_FIRST_N(WARNING, 50) << details;
     stream_->OnUnrecoverableError(result, details);
diff --git a/quic/core/quic_stream_sequencer.h b/quic/core/quic_stream_sequencer.h
index 42b583f..50b5b68 100644
--- a/quic/core/quic_stream_sequencer.h
+++ b/quic/core/quic_stream_sequencer.h
@@ -35,8 +35,6 @@
     virtual void OnFinRead() = 0;
     // Called when bytes have been consumed from the sequencer.
     virtual void AddBytesConsumed(QuicByteCount bytes) = 0;
-    // TODO(b/136274541): Clean up this interface via OnUnrecoverableError and
-    // remove PeerAddressOfLatestPacket().
     // Called when an error has occurred which should result in the stream
     // being reset.
     virtual void Reset(QuicRstStreamErrorCode error) = 0;
@@ -44,11 +42,8 @@
     // being closed.
     virtual void OnUnrecoverableError(QuicErrorCode error,
                                       const std::string& details) = 0;
-
     // Returns the stream id of this stream.
     virtual QuicStreamId id() const = 0;
-    // Returns the peer address of the last packet received for this stream.
-    virtual const QuicSocketAddress& PeerAddressOfLatestPacket() const = 0;
   };
 
   explicit QuicStreamSequencer(StreamInterface* quic_stream);
diff --git a/quic/core/quic_stream_sequencer_test.cc b/quic/core/quic_stream_sequencer_test.cc
index e2cd2ae..188eb86 100644
--- a/quic/core/quic_stream_sequencer_test.cc
+++ b/quic/core/quic_stream_sequencer_test.cc
@@ -40,14 +40,6 @@
   MOCK_METHOD1(AddBytesConsumed, void(QuicByteCount bytes));
 
   QuicStreamId id() const override { return 1; }
-
-  const QuicSocketAddress& PeerAddressOfLatestPacket() const override {
-    return peer_address_;
-  }
-
- protected:
-  QuicSocketAddress peer_address_ =
-      QuicSocketAddress(QuicIpAddress::Any4(), 65535);
 };
 
 namespace {
