code: func (s *ScrollService) first(ctx context.Context) (*SearchResult, error) {
  	// Get URL and parameters for request
  	path, params, err := s.buildFirstURL()
  	if err != nil {
  		return nil, err
  	}
  
  	// Get HTTP request body
  	body, err := s.bodyFirst()
  	if err != nil {
  		return nil, err
  	}
  
  	// Get HTTP response
  	res, err := s.client.PerformRequest(ctx, PerformRequestOptions{
  		Method:          "POST",
  		Path:            path,
  		Params:          params,
  		Body:            body,
  		Retrier:         s.retrier,
  		Headers:         s.headers,
  		MaxResponseSize: s.maxResponseSize,
  	})
  	if err != nil {
  		return nil, err
  	}
  
  	// Return operation response
  	ret := new(SearchResult)
  	if err := s.client.decoder.Decode(res.Body, ret); err != nil {
  		return nil, err
  	}
  	s.mu.Lock()
  	s.scrollId = ret.ScrollId
  	s.mu.Unlock()
  	if ret.Hits == nil || len(ret.Hits.Hits) == 0 {
  		return ret, io.EOF
  	}
  	return ret, nil
  }
docs: // -- First --
  // first takes the first page of search results.