code: def execute(self):
          
          self.response = SolrResponse.load_http_response(
              self.session.get(self.HTTP_ENDPOINT, params=self.query)
          )
  
          # ADS will apply a ceiling to 'rows' and re-write the query
          # This code checks if that happened by comparing the reponse
          # "rows" with what we sent in our query
          # references https://github.com/andycasey/ads/issues/45
          recv_rows = int(self.response.responseHeader.get("params", {}).get("rows"))
          if recv_rows != self.query.get("rows"):
              self._query['rows'] = recv_rows
              warnings.warn("Response rows did not match input rows. "
                            "Setting this query's rows to {}".format(self.query['rows']))
  
          self._articles.extend(self.response.articles)
          if self._query.get('start') is not None:
              self._query['start'] += self._query['rows']
          elif self._query.get('cursorMark') is not None:
              self._query['cursorMark'] = self.response.json.get("nextCursorMark")
  
          self._highlights.update(self.response.json.get("highlighting", {}))
docs: Sends the http request implied by the self.query
          In addition, set up the request such that we can call next()
          to provide the next page of results