mirror of https://github.com/grpc/grpc-node.git
				
				
				
			Propagate channel closed errors up through waitForReady
The errors thrown by `Channel#getConnectivityState` and `Channel#watchConnectivityState` need to be passed to the callback for `Client#waitForReady`.
This commit is contained in:
		
							parent
							
								
									db291906fa
								
							
						
					
					
						commit
						6d520c522c
					
				| 
						 | 
				
			
			@ -720,13 +720,23 @@ Client.prototype.waitForReady = function(deadline, callback) {
 | 
			
		|||
      callback(new Error('Failed to connect before the deadline'));
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    var new_state = self.$channel.getConnectivityState(true);
 | 
			
		||||
    var new_state;
 | 
			
		||||
    try {
 | 
			
		||||
      new_state = self.$channel.getConnectivityState(true);
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
      callback(new Error('The channel has been closed'));
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    if (new_state === grpc.connectivityState.READY) {
 | 
			
		||||
      callback();
 | 
			
		||||
    } else if (new_state === grpc.connectivityState.FATAL_FAILURE) {
 | 
			
		||||
      callback(new Error('Failed to connect to server'));
 | 
			
		||||
    } else {
 | 
			
		||||
      self.$channel.watchConnectivityState(new_state, deadline, checkState);
 | 
			
		||||
      try {
 | 
			
		||||
        self.$channel.watchConnectivityState(new_state, deadline, checkState);
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
        callback(new Error('The channel has been closed'));
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
  /* Force a single round of polling to ensure that the channel state is up
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue