code: func (s *Service) Step(stream orderer.Cluster_StepServer) error {
  	s.StreamCountReporter.Increment()
  	defer s.StreamCountReporter.Decrement()
  
  	addr := util.ExtractRemoteAddress(stream.Context())
  	commonName := commonNameFromContext(stream.Context())
  	exp := s.initializeExpirationCheck(stream, addr, commonName)
  	s.Logger.Debugf("Connection from %s(%s)", commonName, addr)
  	defer s.Logger.Debugf("Closing connection from %s(%s)", commonName, addr)
  	for {
  		err := s.handleMessage(stream, addr, exp)
  		if err == io.EOF {
  			s.Logger.Debugf("%s(%s) disconnected", commonName, addr)
  			return nil
  		}
  		if err != nil {
  			return err
  		}
  		// Else, no error occurred, so we continue to the next iteration
  	}
  }
docs: // Step passes an implementation-specific message to another cluster member.