code: func (c *RegionCache) loadRegionByID(bo *Backoffer, regionID uint64) (*Region, error) {
  	var backoffErr error
  	for {
  		if backoffErr != nil {
  			err := bo.Backoff(BoPDRPC, backoffErr)
  			if err != nil {
  				return nil, errors.Trace(err)
  			}
  		}
  		meta, leader, err := c.pdClient.GetRegionByID(bo.ctx, regionID)
  		if err != nil {
  			tikvRegionCacheCounterWithGetRegionByIDError.Inc()
  		} else {
  			tikvRegionCacheCounterWithGetRegionByIDOK.Inc()
  		}
  		if err != nil {
  			backoffErr = errors.Errorf("loadRegion from PD failed, regionID: %v, err: %v", regionID, err)
  			continue
  		}
  		if meta == nil {
  			backoffErr = errors.Errorf("region not found for regionID %q", regionID)
  			continue
  		}
  		if len(meta.Peers) == 0 {
  			return nil, errors.New("receive Region with no peer")
  		}
  		region := &Region{
  			meta: meta,
  			peer: meta.Peers[0],
  		}
  		if leader != nil {
  			region.SwitchPeer(leader.GetStoreId())
  		}
  		return region, nil
  	}
  }
docs: // loadRegionByID loads region from pd client, and picks the first peer as leader.