diff --git a/quiche/common/quiche_feature_flags_list.h b/quiche/common/quiche_feature_flags_list.h
index ed32c81..cc30164 100755
--- a/quiche/common/quiche_feature_flags_list.h
+++ b/quiche/common/quiche_feature_flags_list.h
@@ -44,7 +44,6 @@
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_enobufs_blocked, true, true, "If true, ENOBUFS socket errors are reported as socket blocked instead of socket failure.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_fin_before_completed_http_headers, false, true, "If true, close the connection with error if FIN is received before finish receiving the whole HTTP headers.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_fix_gap_filling_ack_logic, false, false, "If true, fix the gap filling ack logic in QuicAckFrame.")
-QUICHE_FLAG(bool, quiche_reloadable_flag_quic_fix_ignore_read_data_when_unblocked, false, false, "If true, correctly handle ignore_read_data case when sequencer gets unblocked.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_fix_timeouts, true, true, "If true, postpone setting handshake timeout to infinite to handshake complete.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_include_datagrams_in_willing_to_write, false, false, "If true, checks for queued datagrams when determining if a connection is willing to write.")
 QUICHE_FLAG(bool, quiche_reloadable_flag_quic_move_clock_now, false, false, "If true, move the call to clock.Now() in QuicPacketReader::ReadAndDispatchPackets to after socket_api_.ReadMultiplePackets().")
diff --git a/quiche/quic/core/http/quic_spdy_stream_test.cc b/quiche/quic/core/http/quic_spdy_stream_test.cc
index 3038037..11de5f4 100644
--- a/quiche/quic/core/http/quic_spdy_stream_test.cc
+++ b/quiche/quic/core/http/quic_spdy_stream_test.cc
@@ -3835,66 +3835,6 @@
   }
 }
 
-// Regression test for b/488057588.
-TEST_P(QuicSpdyStreamTest, ReadSideNotClosedAfterStopReading) {
-  if (!IsIetfQuic()) {
-    return;
-  }
-  SetQuicReloadableFlag(quic_clear_body_manager_along_with_sequencer, true);
-
-  Initialize(kShouldProcessData);
-
-  QuicHeaderList headers = ProcessHeaders(false, headers_);
-  stream_->ConsumeHeaderList();
-
-  // In Envoy QUIC, application can stop processing data before getting read
-  // blocked.
-  stream_->set_should_process_data(false);
-  std::string body = "this is the body";
-  std::string data = DataFrame(body);
-  QuicStreamOffset offset = 0;
-  QuicStreamFrame frame1(GetNthClientInitiatedBidirectionalId(0), /*fin=*/false,
-                         offset, data);
-  offset += data.size();
-  stream_->OnStreamFrame(frame1);
-  EXPECT_TRUE(stream_->sequencer()->HasBytesToRead());
-  EXPECT_TRUE(QuicSpdyStreamPeer::BodyManager(stream_).HasBytesToRead());
-
-  // In Envoy QUIC, StopReading can be called after local reset.
-  stream_->StopReading();
-  // Sequencer is not closed but the bytes in body_manager is cleared.
-  EXPECT_FALSE(stream_->sequencer()->IsClosed());
-  EXPECT_FALSE(QuicSpdyStreamPeer::BodyManager(stream_).HasBytesToRead());
-
-  // QUIC gets blocked.
-  stream_->sequencer()->SetBlockedUntilFlush();
-
-  // FIN does not close the read side since the stream is blocked.
-  QuicStreamFrame frame2(GetNthClientInitiatedBidirectionalId(0), /*fin=*/true,
-                         offset, "second body");
-  stream_->OnStreamFrame(frame2);
-  EXPECT_FALSE(stream_->sequencer()->IsClosed());
-
-  // Because sequencer has bytes to read, On DataAvailable is called.
-  // However, since neither body_manager has bytes to read nor sequencer is
-  // closed,  OnBodyAvailable is not called to close the read side when
-  // SetUnblocked is called.
-  EXPECT_FALSE(QuicSpdyStreamPeer::BodyManager(stream_).HasBytesToRead());
-  EXPECT_FALSE(stream_->sequencer()->IsClosed());
-  EXPECT_TRUE(stream_->sequencer()->HasBytesToRead());
-
-  // Application gets unblocked.
-  stream_->set_should_process_data(true);
-  // QUIC gets unblocked.
-  stream_->sequencer()->SetUnblocked();
-
-  if (GetQuicReloadableFlag(quic_fix_ignore_read_data_when_unblocked)) {
-    EXPECT_TRUE(stream_->read_side_closed());
-  } else {
-    EXPECT_FALSE(stream_->read_side_closed());
-  }
-}
-
 }  // namespace
 }  // namespace test
 }  // namespace quic
diff --git a/quiche/quic/core/quic_stream_sequencer.cc b/quiche/quic/core/quic_stream_sequencer.cc
index dcb6252..13a1668 100644
--- a/quiche/quic/core/quic_stream_sequencer.cc
+++ b/quiche/quic/core/quic_stream_sequencer.cc
@@ -24,7 +24,6 @@
 #include "quiche/quic/platform/api/quic_flags.h"
 #include "quiche/quic/platform/api/quic_logging.h"
 #include "quiche/quic/platform/api/quic_stack_trace.h"
-#include "quiche/common/platform/api/quiche_flag_utils.h"
 
 namespace quic {
 
@@ -266,16 +265,6 @@
 
 void QuicStreamSequencer::SetUnblocked() {
   blocked_ = false;
-  if (GetQuicReloadableFlag(quic_fix_ignore_read_data_when_unblocked)) {
-    QUICHE_RELOADABLE_FLAG_COUNT_N(quic_fix_ignore_read_data_when_unblocked, 1,
-                                   2);
-    if (ignore_read_data_) {
-      QUICHE_RELOADABLE_FLAG_COUNT_N(quic_fix_ignore_read_data_when_unblocked,
-                                     2, 2);
-      FlushBufferedFrames();
-      return;
-    }
-  }
   if (IsClosed() || HasBytesToRead()) {
     stream_->OnDataAvailable();
   }
