diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 885838ec5d71608dad939cb86a1ef745cf292a85..ea24796f350e046a43db574d261ba3f6f544ac47 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -824,12 +824,9 @@ static void unlock(transport *t) {
 
   /* gather any callbacks that need to be made */
   if (!t->calling_back) {
-    perform_callbacks = prepare_callbacks(t);
-    if (perform_callbacks) {
-      t->calling_back = 1;
-    }
+    t->calling_back = perform_callbacks = prepare_callbacks(t);
     if (cb) {
-      if (t->error_state == ERROR_STATE_SEEN && !t->writing && !t->calling_back) {
+      if (t->error_state == ERROR_STATE_SEEN && !t->writing) {
         call_closed = 1;
         t->calling_back = 1;
         t->cb = NULL; /* no more callbacks */