|  | @@ -131,6 +131,10 @@ static void partly_done(grpc_exec_ctx *exec_ctx, state_watcher *w,
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    gpr_mu_lock(&w->mu);
 | 
	
		
			
				|  |  | +  const char *msg = grpc_error_string(error);
 | 
	
		
			
				|  |  | +  gpr_log(GPR_DEBUG, "partly_done: d2c=%d phs=%d err=%s", due_to_completion, w->phase, msg);
 | 
	
		
			
				|  |  | +  grpc_error_free_string(msg);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (due_to_completion) {
 | 
	
		
			
				|  |  |      GRPC_ERROR_UNREF(w->error);
 | 
	
		
			
				|  |  |      w->error = GRPC_ERROR_NONE;
 | 
	
	
		
			
				|  | @@ -155,16 +159,18 @@ static void partly_done(grpc_exec_ctx *exec_ctx, state_watcher *w,
 | 
	
		
			
				|  |  |    if (delete) {
 | 
	
		
			
				|  |  |      delete_state_watcher(exec_ctx, w);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  GRPC_ERROR_UNREF(error);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void watch_complete(grpc_exec_ctx *exec_ctx, void *pw,
 | 
	
		
			
				|  |  |                             grpc_error *error) {
 | 
	
		
			
				|  |  | -  partly_done(exec_ctx, pw, true, error);
 | 
	
		
			
				|  |  | +  partly_done(exec_ctx, pw, true, GRPC_ERROR_REF(error));
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void timeout_complete(grpc_exec_ctx *exec_ctx, void *pw,
 | 
	
		
			
				|  |  |                               grpc_error *error) {
 | 
	
		
			
				|  |  | -  partly_done(exec_ctx, pw, false, error);
 | 
	
		
			
				|  |  | +  partly_done(exec_ctx, pw, false, GRPC_ERROR_REF(error));
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void grpc_channel_watch_connectivity_state(
 | 
	
	
		
			
				|  | @@ -189,7 +195,7 @@ void grpc_channel_watch_connectivity_state(
 | 
	
		
			
				|  |  |    grpc_closure_init(&w->on_complete, watch_complete, w);
 | 
	
		
			
				|  |  |    w->phase = WAITING;
 | 
	
		
			
				|  |  |    w->state = last_observed_state;
 | 
	
		
			
				|  |  | -  w->error = GRPC_ERROR_CREATE("Some error");
 | 
	
		
			
				|  |  | +  w->error = GRPC_ERROR_CREATE("Timeout waiting for channel state");
 | 
	
		
			
				|  |  |    w->cq = cq;
 | 
	
		
			
				|  |  |    w->tag = tag;
 | 
	
		
			
				|  |  |    w->channel = channel;
 |