diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index d5695fe49c21ede0814405228945939f0a29eb5b..554a0f56dc1a35fa977288073338198e17b4a7d9 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -712,8 +712,9 @@ static void finish_global_actions(grpc_exec_ctx *exec_ctx,
           set_write_state(t, GRPC_CHTTP2_WRITE_SCHEDULED, "unlocking");
           REF_TRANSPORT(t, "initiate_writing");
           gpr_mu_unlock(&t->executor.mu);
-          grpc_exec_ctx_sched(exec_ctx, &t->initiate_writing, GRPC_ERROR_NONE,
-                              grpc_endpoint_get_workqueue(t->ep));
+          grpc_exec_ctx_sched(
+              exec_ctx, &t->initiate_writing, GRPC_ERROR_NONE,
+              t->ep != NULL ? grpc_endpoint_get_workqueue(t->ep) : NULL);
           break;
         case GRPC_CHTTP2_WRITE_REQUESTED_NO_POLLER:
           start_writing(exec_ctx, t);