code: func (stream *Stream) sendMessage(request *orderer.StepRequest) {
  	start := time.Now()
  	var err error
  	defer func() {
  		if !stream.Logger.IsEnabledFor(zap.DebugLevel) {
  			return
  		}
  		var result string
  		if err != nil {
  			result = fmt.Sprintf("but failed due to %s", err.Error())
  		}
  		stream.Logger.Debugf("Send of %s to %s(%s) took %v %s", requestAsString(request),
  			stream.NodeName, stream.Endpoint, time.Since(start), result)
  	}()
  
  	f := func() (*orderer.StepResponse, error) {
  		startSend := time.Now()
  		stream.expCheck.checkExpiration(startSend, stream.Channel)
  		err := stream.Cluster_StepClient.Send(request)
  		stream.metrics.reportMsgSendTime(stream.Endpoint, stream.Channel, time.Since(startSend))
  		return nil, err
  	}
  
  	_, err = stream.operateWithTimeout(f)
  }
docs: // sendMessage sends the request down the stream