The REST delivery and token-request hooks in google/cloud-bigquery 1.39.3 can share a proxy-aware PSR request handler:

$proxy = 'http://proxy.example:8080';
$http = new \GuzzleHttp\Client();
$send = static function (
    \Psr\Http\Message\RequestInterface $request,
    array $options = []
) use ($http, $proxy) {
    $options['proxy'] = $proxy;
    return $http->send($request, $options);
};

$bigQuery = new \Google\Cloud\BigQuery\BigQueryClient([
    'projectId' => $projectId,
    'httpHandler' => $send,
    'authHttpHandler' => $send,
]);

The callable assigns Guzzle's proxy option on each request, including a public HTTP endpoint selected from the HTTP proxy list, and the constructor gives that callable to both httpHandler and authHttpHandler. This covers REST delivery and the authentication requests using that hook. Retain the supported credential setup; a credential that owns a different transport needs that transport inspected too.

Add required direct exceptions through Guzzle's supported proxy configuration. Keep the BigQuery API endpoint as the service destination: placing a proxy address in apiEndpoint selects a different service rather than configuring this route.

These are BigQueryClient constructor options. They neither configure an independent gRPC channel nor correspond to Google\Client's setHttpClient interface in the separate Google API PHP Client library.

Artiglyn mynjee