diff --git a/src/core/ext/filters/http/message_compress/message_compress_filter.c b/src/core/ext/filters/http/message_compress/message_compress_filter.c
index 978dbd61d487a03a4f8084698edc5fa089deed3a..00bd271dd579b481c8f1c9c3ea3f003e59cdb590 100644
--- a/src/core/ext/filters/http/message_compress/message_compress_filter.c
+++ b/src/core/ext/filters/http/message_compress/message_compress_filter.c
@@ -286,6 +286,8 @@ static void compress_start_transport_stream_op_batch(
           grpc_transport_stream_op_batch_finish_with_failure(
               exec_ctx, (grpc_transport_stream_op_batch *)cur,
               op->payload->cancel_stream.cancel_error);
+        } else {
+          GRPC_ERROR_UNREF((grpc_error*)(cur & ~CANCELLED_BIT));
         }
         break;
     }