code: @Override
    public final void start(ClientStreamListener listener) {
      masterListener = listener;
  
      Status shutdownStatus = prestart();
  
      if (shutdownStatus != null) {
        cancel(shutdownStatus);
        return;
      }
  
      class StartEntry implements BufferEntry {
        @Override
        public void runWith(Substream substream) {
          substream.stream.start(new Sublistener(substream));
        }
      }
  
      synchronized (lock) {
        state.buffer.add(new StartEntry());
      }
  
      Substream substream = createSubstream(0);
      checkState(hedgingPolicy == null, "hedgingPolicy has been initialized unexpectedly");
      // TODO(zdapeng): if substream is a DelayedStream, do this when name resolution finishes
      hedgingPolicy = hedgingPolicyProvider.get();
      if (!HedgingPolicy.DEFAULT.equals(hedgingPolicy)) {
        isHedging = true;
        retryPolicy = RetryPolicy.DEFAULT;
  
        FutureCanceller scheduledHedgingRef = null;
  
        synchronized (lock) {
          state = state.addActiveHedge(substream);
          if (hasPotentialHedging(state)
              && (throttle == null || throttle.isAboveThreshold())) {
            scheduledHedging = scheduledHedgingRef = new FutureCanceller(lock);
          }
        }
  
        if (scheduledHedgingRef != null) {
          scheduledHedgingRef.setFuture(
              scheduledExecutorService.schedule(
                  new HedgingRunnable(scheduledHedgingRef),
                  hedgingPolicy.hedgingDelayNanos,
                  TimeUnit.NANOSECONDS));
        }
      }
  
      drain(substream);
    }
docs: Starts the first PRC attempt.