code: func (a *Agent) Service(serviceID string, q *QueryOptions) (*AgentService, *QueryMeta, error) {
  	r := a.c.newRequest("GET", "/v1/agent/service/"+serviceID)
  	r.setQueryOptions(q)
  	rtt, resp, err := requireOK(a.c.doRequest(r))
  	if err != nil {
  		return nil, nil, err
  	}
  	defer resp.Body.Close()
  
  	qm := &QueryMeta{}
  	parseQueryMeta(resp, qm)
  	qm.RequestTime = rtt
  
  	var out *AgentService
  	if err := decodeBody(resp, &out); err != nil {
  		return nil, nil, err
  	}
  
  	return out, qm, nil
  }
docs: // Service returns a locally registered service instance and allows for
  // hash-based blocking.
  //
  // Note that this uses an unconventional blocking mechanism since it's
  // agent-local state. That means there is no persistent raft index so we block
  // based on object hash instead.