protected function execute($method, $path, $body = null, array $customHeaders = [])
    {
        // Clear state from the last call.
        $this->lastHttpRequest = null;
        $this->lastHttpResponse = null;

        // Build the request.
        $request = $this->buildRequest($method, $path, $body, $customHeaders);

        // Store the PSR-7 Request object for future examination and use. Redact the API key
        // so it isn't unwittingly propagated as a result of this feature.
        $this->lastHttpRequest = $request->withHeader('Authorization', 'Bearer {REDACTED}');

        // Make the API call.
        $response = $this->httpClient->sendRequest($request);

        // Store the PSR-7 Response object for future examination and use. Heroku uses headers
        // as a secondary communication channel for range, rate limit, and caching information.
        $this->lastHttpResponse = $response;

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