diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 7b50e285d0d60ad38f62cbfd686dfe67f1567878..7c3f40e3b93cbd232c4b5274344419e9de4d2f2b 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -1132,6 +1132,7 @@ static void cancel_stream_inner(transport *t, stream *s, gpr_uint32 id,
     if (s->outgoing_sopb) {
       schedule_nuke_sopb(t, s->outgoing_sopb);
       s->outgoing_sopb = NULL;
+      stream_list_remove(t, s, WRITABLE);
       schedule_cb(t, s->send_done_closure, 0);
     }
     if (s->cancelled) {