code: protected CallOptions getRpcCallOptions() {
      if (callOptions.getDeadline() != null || isStreamingRead()) {
        // If the user set a deadline, honor it.
        // If this is a streaming read, then the Watchdog will take affect and ensure that hanging does not occur.
        return getOperationCallOptions();
      } else {
        // Unary calls should fail after 6 minutes, if there isn't any response from the server.
        return callOptions.withDeadlineAfter(UNARY_DEADLINE_MINUTES, TimeUnit.MINUTES);
      }
    }
docs: Create an {@link CallOptions} that has a fail safe RPC deadline to make sure that unary
  operations don't hang. This will have to be overridden for streaming RPCs like read rows.
  <p>
  The logic is as follows:
  <ol>
  <li> If the user provides a deadline, use the deadline</li>
  <li> Else If this is a streaming read, don't set an explicit deadline.  The
  {@link com.google.cloud.bigtable.grpc.io.Watchdog} will handle hanging</li>
  <li> Else Set a deadline of {@link #UNARY_DEADLINE_MINUTES} minutes deadline.</li>
  </ol>
  
  @see com.google.cloud.bigtable.grpc.io.Watchdog Watchdog which handles hanging for streaming
  reads.
  
  @return a {@link CallOptions}