code: func (s *DeleteService) Do(ctx context.Context) (*DeleteResponse, error) {
  	// Check pre-conditions
  	if err := s.Validate(); err != nil {
  		return nil, err
  	}
  
  	// Get URL for request
  	path, params, err := s.buildURL()
  	if err != nil {
  		return nil, err
  	}
  
  	// Get HTTP response
  	res, err := s.client.PerformRequest(ctx, PerformRequestOptions{
  		Method:       "DELETE",
  		Path:         path,
  		Params:       params,
  		IgnoreErrors: []int{http.StatusNotFound},
  	})
  	if err != nil {
  		return nil, err
  	}
  
  	// Return operation response
  	ret := new(DeleteResponse)
  	if err := s.client.decoder.Decode(res.Body, ret); err != nil {
  		return nil, err
  	}
  
  	// If we have a 404, we return both a result and an error, just like ES does
  	if res.StatusCode == http.StatusNotFound {
  		return ret, &Error{Status: http.StatusNotFound}
  	}
  
  	return ret, nil
  }
docs: // Do executes the operation. If the document is not found (404), Elasticsearch will
  // still return a response. This response is serialized and returned as well. In other
  // words, for HTTP status code 404, both an error and a response might be returned.