code: func (s *Server) forwardDC(method, dc string, args interface{}, reply interface{}) error {
  	manager, server, ok := s.router.FindRoute(dc)
  	if !ok {
  		s.logger.Printf("[WARN] consul.rpc: RPC request for DC %q, no path found", dc)
  		return structs.ErrNoDCPath
  	}
  
  	metrics.IncrCounterWithLabels([]string{"rpc", "cross-dc"}, 1,
  		[]metrics.Label{{Name: "datacenter", Value: dc}})
  	if err := s.connPool.RPC(dc, server.Addr, server.Version, method, server.UseTLS, args, reply); err != nil {
  		manager.NotifyFailedServer(server)
  		s.logger.Printf("[ERR] consul: RPC failed to server %s in DC %q: %v", server.Addr, dc, err)
  		return err
  	}
  
  	return nil
  }
docs: // forwardDC is used to forward an RPC call to a remote DC, or fail if no servers