diff --git a/src/core/surface/channel_connectivity.c b/src/core/surface/channel_connectivity.c
index dd12ff561114211c57b1afebc24f18764ae4a808..b6ea86d730f327b6ad3752a5880d3159f783a553 100644
--- a/src/core/surface/channel_connectivity.c
+++ b/src/core/surface/channel_connectivity.c
@@ -172,8 +172,9 @@ void grpc_channel_watch_connectivity_state(
   w->tag = tag;
   w->channel = channel;
 
-  grpc_alarm_init(&w->alarm, deadline, timeout_complete, w,
-                  gpr_now(GPR_CLOCK_REALTIME));
+  grpc_alarm_init(
+      &w->alarm, gpr_convert_clock_type(deadline, GPR_CLOCK_MONOTONIC), 
+      timeout_complete, w, gpr_now(GPR_CLOCK_MONOTONIC));
 
   if (client_channel_elem->filter != &grpc_client_channel_filter) {
     gpr_log(GPR_ERROR,