private function parseRateLimitHeaders($headers) {
        if ($headers === null) {
            return null;
        }

        $header_lines = explode("\n", $headers);
        $rate_limit_headers = [ ];
        foreach ($header_lines as $hl) {
            if (strpos($hl, "X-Rate-Limit-Limit") !== FALSE && !isset($rate_limit_headers['limit'])) {
                list($header_name, $header_value) = explode(":", $hl, 2);
                $rate_limit_headers['limit'] = intval($header_value);
            } else if (strpos($hl, "X-Rate-Limit-Remaining") !== FALSE && !isset($rate_limit_headers['remaining'])) {
                list($header_name, $header_value) = explode(":", $hl, 2);
                $rate_limit_headers['remaining'] = intval($header_value);
            } else if (strpos($hl, "X-Rate-Limit-Reset") !== FALSE && !isset($rate_limit_headers['reset'])) {
                list($header_name, $header_value) = explode(":", $hl, 2);
                $rate_limit_headers['reset'] = intval($header_value);
            }

            if (count($rate_limit_headers) === 3) {
                return $rate_limit_headers;
            }
        }

        return null;
    }