public function request($method, $uri = '', array $options = [])
    {
        if (!isset($options['query'])) {
            $options['query'] = [];
        }
        if ($this->apiKey && !isset($options['query']['api_key'])) {
            $options['query']['api_key'] = $this->apiKey;
        }

        try {
            return $this->client->request($method, $uri, $options);
        } catch (\GuzzleHttp\Exception\BadResponseException $ex) {
            if ($ex->hasResponse()) {
                return $ex->getResponse();
            }
            throw $ex;
        }
    }