public function executeRequest(Request $request, $redirectsLimit = 10)
 {
     $requestHeaders = $request->getHeaders();
     $accessToken = $this->oauthApi->getToken();
     if (false === $accessToken) {
         throw new OAuthError("The access token that you've provided is not valid, check your credentials or endpoint.");
     }
     $bearerAuth = new BearerAuth($accessToken->getAccessToken());
     $this->httpClient->addSubscriber($bearerAuth);
     $httpRequest = $this->httpClient->createRequest($method = $request->getMethod(), $uri = $request->getResourceUrl(), $headers = $request->getHeaders(), $body = $request->getBody());
     $this->addQueryString($request->getQueryString(), $httpRequest);
     $response = $httpRequest->send();
     if ($response->isRedirect() && $redirectsLimit) {
         $request->setResourceUrl($response->getHeader('location'));
         return $this->executeRequest($request, --$redirectsLimit);
     }
     return new DefaultResponse($response->getStatusCode(), $response->getContentType(), $response->getBody(true), $response->getContentLength());
 }