code: func (h *Helper) GetRegionsInfo() (*RegionsInfo, error) {
  	etcd, ok := h.Store.(tikv.EtcdBackend)
  	if !ok {
  		return nil, errors.WithStack(errors.New("not implemented"))
  	}
  	pdHosts := etcd.EtcdAddrs()
  	if len(pdHosts) == 0 {
  		return nil, errors.New("pd unavailable")
  	}
  	req, err := http.NewRequest("GET", protocol+pdHosts[0]+pdapi.Regions, nil)
  	if err != nil {
  		return nil, errors.Trace(err)
  	}
  	timeout, cancelFunc := context.WithTimeout(context.Background(), 5*time.Second)
  	resp, err := http.DefaultClient.Do(req.WithContext(timeout))
  	defer cancelFunc()
  	if err != nil {
  		return nil, errors.Trace(err)
  	}
  	defer func() {
  		err = resp.Body.Close()
  		if err != nil {
  			logutil.Logger(context.Background()).Error("close body failed", zap.Error(err))
  		}
  	}()
  	var regionsInfo RegionsInfo
  	err = json.NewDecoder(resp.Body).Decode(&regionsInfo)
  	if err != nil {
  		return nil, errors.Trace(err)
  	}
  	return &regionsInfo, nil
  }
docs: // GetRegionsInfo gets the region information of current store by using PD's api.