protected function request($path, array $data = null, $method = null)
    {
        $authError = $this->authenticationError();
        if (null !== $authError) {
            return $authError;
        }

        $url  = 'https://api.cloudflare.com/client/v4/' . $path;
        $args = $this->prepareRequestArguments($data, $method);

        $response = wp_remote_request($url, $args);

        if (is_wp_error($response)) {
            return $response;
        }

        return $this->decode($response);
    }