diff --git a/quiche/quic/core/http/quic_server_session_base_test.cc b/quiche/quic/core/http/quic_server_session_base_test.cc
index 807f05f..133dcbf 100644
--- a/quiche/quic/core/http/quic_server_session_base_test.cc
+++ b/quiche/quic/core/http/quic_server_session_base_test.cc
@@ -525,7 +525,8 @@
 
   if (!VersionUsesHttp3(transport_version())) {
     session_->UnregisterStreamPriority(
-        QuicUtils::GetHeadersStreamId(transport_version()));
+        QuicUtils::GetHeadersStreamId(transport_version()),
+        /*is_static=*/true);
   }
   QuicServerSessionBasePeer::SetCryptoStream(session_.get(), nullptr);
   MockQuicCryptoServerStream* quic_crypto_stream = nullptr;
diff --git a/quiche/quic/core/quic_session.cc b/quiche/quic/core/quic_session.cc
index 4b37c76..a58e572 100644
--- a/quiche/quic/core/quic_session.cc
+++ b/quiche/quic/core/quic_session.cc
@@ -1816,8 +1816,8 @@
   write_blocked_streams()->RegisterStream(id, is_static, priority);
 }
 
-void QuicSession::UnregisterStreamPriority(QuicStreamId id) {
-  write_blocked_streams()->UnregisterStream(id);
+void QuicSession::UnregisterStreamPriority(QuicStreamId id, bool is_static) {
+  write_blocked_streams()->UnregisterStream(id, is_static);
 }
 
 void QuicSession::UpdateStreamPriority(QuicStreamId id,
diff --git a/quiche/quic/core/quic_session.h b/quiche/quic/core/quic_session.h
index f59d184..5c97f1a 100644
--- a/quiche/quic/core/quic_session.h
+++ b/quiche/quic/core/quic_session.h
@@ -334,7 +334,7 @@
   void RegisterStreamPriority(QuicStreamId id, bool is_static,
                               const QuicStreamPriority& priority) override;
   // Clears priority from the write blocked list.
-  void UnregisterStreamPriority(QuicStreamId id) override;
+  void UnregisterStreamPriority(QuicStreamId id, bool is_static) override;
   // Updates priority on the write blocked list.
   void UpdateStreamPriority(QuicStreamId id,
                             const QuicStreamPriority& new_priority) override;
diff --git a/quiche/quic/core/quic_stream.cc b/quiche/quic/core/quic_stream.cc
index 6a436ff..3fa0d01 100644
--- a/quiche/quic/core/quic_stream.cc
+++ b/quiche/quic/core/quic_stream.cc
@@ -390,7 +390,7 @@
         << ", fin_outstanding: " << fin_outstanding_;
   }
   if (stream_delegate_ != nullptr && type_ != CRYPTO) {
-    stream_delegate_->UnregisterStreamPriority(id());
+    stream_delegate_->UnregisterStreamPriority(id(), is_static_);
   }
 }
 
diff --git a/quiche/quic/core/quic_write_blocked_list.cc b/quiche/quic/core/quic_write_blocked_list.cc
index f6d00f2..2497907 100644
--- a/quiche/quic/core/quic_write_blocked_list.cc
+++ b/quiche/quic/core/quic_write_blocked_list.cc
@@ -68,8 +68,10 @@
   priority_write_scheduler_.RegisterStream(stream_id, priority);
 }
 
-void QuicWriteBlockedList::UnregisterStream(QuicStreamId stream_id) {
-  if (static_stream_collection_.Unregister(stream_id)) {
+void QuicWriteBlockedList::UnregisterStream(QuicStreamId stream_id,
+                                            bool is_static) {
+  if (is_static) {
+    static_stream_collection_.Unregister(stream_id);
     return;
   }
   priority_write_scheduler_.UnregisterStream(stream_id);
@@ -127,17 +129,17 @@
   return false;
 }
 
-bool QuicWriteBlockedList::StaticStreamCollection::Unregister(QuicStreamId id) {
+void QuicWriteBlockedList::StaticStreamCollection::Unregister(QuicStreamId id) {
   for (auto it = streams_.begin(); it != streams_.end(); ++it) {
     if (it->id == id) {
       if (it->is_blocked) {
         --num_blocked_;
       }
       streams_.erase(it);
-      return true;
+      return;
     }
   }
-  return false;
+  QUICHE_DCHECK(false) << "Erasing a non-exist stream with id " << id;
 }
 
 bool QuicWriteBlockedList::StaticStreamCollection::SetBlocked(QuicStreamId id) {
diff --git a/quiche/quic/core/quic_write_blocked_list.h b/quiche/quic/core/quic_write_blocked_list.h
index b366eaf..0ad2c2d 100644
--- a/quiche/quic/core/quic_write_blocked_list.h
+++ b/quiche/quic/core/quic_write_blocked_list.h
@@ -63,9 +63,7 @@
   void RegisterStream(QuicStreamId stream_id, bool is_static_stream,
                       const QuicStreamPriority& priority);
 
-  // Unregister a stream.  `stream_id` must be registered, either as a static
-  // stream or as a non-static stream.
-  void UnregisterStream(QuicStreamId stream_id);
+  void UnregisterStream(QuicStreamId stream_id, bool is_static);
 
   // Updates the stored priority of a stream.  Must not be called for static
   // streams.
@@ -126,9 +124,9 @@
     // True if |id| is in the collection, regardless of its state.
     bool IsRegistered(QuicStreamId id) const;
 
-    // Remove |id| from the collection.  If it is in the blocked state, reduce
-    // |num_blocked_| by 1.  Returns true if |id| was in the collection.
-    bool Unregister(QuicStreamId id);
+    // Remove |id| from the collection, if it is in the blocked state, reduce
+    // |num_blocked_| by 1.
+    void Unregister(QuicStreamId id);
 
     // Set |id| to be blocked. If |id| is not already blocked, increase
     // |num_blocked_| by 1.
diff --git a/quiche/quic/core/quic_write_blocked_list_test.cc b/quiche/quic/core/quic_write_blocked_list_test.cc
index e69e071..1847993 100644
--- a/quiche/quic/core/quic_write_blocked_list_test.cc
+++ b/quiche/quic/core/quic_write_blocked_list_test.cc
@@ -6,7 +6,6 @@
 
 #include "quiche/quic/platform/api/quic_test.h"
 #include "quiche/quic/test_tools/quic_test_utils.h"
-#include "quiche/common/platform/api/quiche_expect_bug.h"
 
 using spdy::kV3HighestPriority;
 using spdy::kV3LowestPriority;
@@ -54,8 +53,8 @@
     write_blocked_list_.RegisterStream(stream_id, is_static_stream, priority);
   }
 
-  void UnregisterStream(QuicStreamId stream_id) {
-    write_blocked_list_.UnregisterStream(stream_id);
+  void UnregisterStream(QuicStreamId stream_id, bool is_static) {
+    write_blocked_list_.UnregisterStream(stream_id, is_static);
   }
 
   void UpdateStreamPriority(QuicStreamId stream_id,
@@ -296,8 +295,8 @@
   AddStream(1);
   AddStream(3);
 
-  UnregisterStream(23);
-  UnregisterStream(1);
+  UnregisterStream(23, kNotStatic);
+  UnregisterStream(1, kStatic);
 
   EXPECT_EQ(3u, PopFront());
   EXPECT_EQ(17u, PopFront());
@@ -305,14 +304,6 @@
   EXPECT_EQ(40, PopFront());
 }
 
-TEST_F(QuicWriteBlockedListTest, UnregisterNotRegisteredStream) {
-  EXPECT_QUICHE_BUG(UnregisterStream(1), "Stream 1 not registered");
-
-  RegisterStream(2, kNotStatic, {kV3HighestPriority, kIncremental});
-  UnregisterStream(2);
-  EXPECT_QUICHE_BUG(UnregisterStream(2), "Stream 2 not registered");
-}
-
 TEST_F(QuicWriteBlockedListTest, UpdateStreamPriority) {
   RegisterStream(40, kNotStatic, {kV3LowestPriority, kNotIncremental});
   RegisterStream(23, kNotStatic, {6, kIncremental});
diff --git a/quiche/quic/core/stream_delegate_interface.h b/quiche/quic/core/stream_delegate_interface.h
index a5f03f0..b6db350 100644
--- a/quiche/quic/core/stream_delegate_interface.h
+++ b/quiche/quic/core/stream_delegate_interface.h
@@ -44,7 +44,7 @@
   virtual void RegisterStreamPriority(QuicStreamId id, bool is_static,
                                       const QuicStreamPriority& priority) = 0;
   // Called on stream destruction to clear priority.
-  virtual void UnregisterStreamPriority(QuicStreamId id) = 0;
+  virtual void UnregisterStreamPriority(QuicStreamId id, bool is_static) = 0;
   // Called by the stream on SetPriority to update priority.
   virtual void UpdateStreamPriority(QuicStreamId id,
                                     const QuicStreamPriority& new_priority) = 0;
diff --git a/quiche/quic/tools/quic_simple_server_session_test.cc b/quiche/quic/tools/quic_simple_server_session_test.cc
index c30283c..d6eb67f 100644
--- a/quiche/quic/tools/quic_simple_server_session_test.cc
+++ b/quiche/quic/tools/quic_simple_server_session_test.cc
@@ -491,7 +491,8 @@
 
   if (!VersionUsesHttp3(transport_version())) {
     session_->UnregisterStreamPriority(
-        QuicUtils::GetHeadersStreamId(transport_version()));
+        QuicUtils::GetHeadersStreamId(transport_version()),
+        /*is_static=*/true);
   }
   // Assume encryption already established.
   QuicSimpleServerSessionPeer::SetCryptoStream(session_.get(), nullptr);
