public function call(Message $request, string $method, array $metadata = [], array $options = []): Response
    {
        $metadata = array_merge($this->buildAuthenticationMetadata(), $metadata);

        $interceptors = $this->interceptors;
        return $this->intercept($interceptors, $request, $method, $metadata, $options, function () use (
            &$interceptors,
            &$request,
            &$method,
            &$metadata,
            &$options
        ) {
            $strategy = $this->config->getStrategy();
            $request = new Request($this->config, $method, $request, $this->getClient(), $metadata, $options);
            return $strategy->execute($request);
        });
    }