public function executeQuery(IDruidQueryGenerator $queryGenerator, IDruidQueryParameters $params, IDruidQueryResponseHandler $responseHandler)
    {
        $params->validate();

        $generatedQuery = $queryGenerator->generateQuery($params);

        // Create a request
        $request = $this->createRequest( $generatedQuery );

        // Send the request and parse the JSON response into an array
        try
        {
            $response = $request->send();
        }
        catch (\Guzzle\Http\Exception\CurlException $curlException)
        {
            throw new $curlException;
        }

        $formattedResponse = $responseHandler->handleResponse($response);

        return $formattedResponse;
    }