private function requestScore($addressBase58)
    {
        try {
            if ($this->requestStartTime == 0) {
                $this->requestStartTime = microtime(true);
            }
            $response = $this->client->request('GET', "/v2/address/$addressBase58/score", $this->authHeaders);
        } catch (RequestException $rex) {
            throw new Exception\TimeoutExceededException('The server did not respond within the allocated time limit.');
        } catch (GuzzleException $gex) {
            throw new Exception\ConnectionFailedException('Failed to connect to the BitRank API', $gex);
        }

        try {
            $statusCode = $this->processHttpResponse($response);
        } catch (Exception\RateLimitExceededException $rlx) {
            if ((microtime(true) - $this->requestStartTime) < $this->timeout) {
                usleep(100);
                return $this->requestScore($addressBase58);
            } else {
                throw $rlx;
            }
        }

        $this->requestStartTime = 0;

        if (200 == $statusCode) {
            $seen = true;

            $dataVersion = $response->getHeader('X-Data-Version');

            if (is_string($dataVersion)) {
                // This is good.
            } elseif (is_array($dataVersion) && count($dataVersion)) {
                $dataVersion = $dataVersion[0];
            } else {
                throw new Exception\InvalidDataException('Expected X-Data-Version data from API');
            }

            //When there is an update to the data the X-Data-Version header will change
            if ($this->dataVersion !== $dataVersion) {
                //invalidate the cache
                $this->cache->clear();
                //update the init-data and cache
                $this->update();
                //check the updated data version matches
                if ($this->dataVersion != $dataVersion) {
                    //there is a problem.
                    throw new Exception\InvalidDataException('The Score X-Data-Version does not match the Init Data X-Data-Version');
                }
            }
        } else {
            $seen = false;
        }

        return [$seen, $response->getBody()];
    }