protected function buildRequest(
        string $method,
        BucketInterface $bucket,
        string $name,
        array $headers = [],
        array $commands = []
    ): RequestInterface {
        $headers += [
            'Date'         => gmdate('D, d M Y H:i:s T'),
            'Content-MD5'  => '',
            'Content-Type' => ''
        ];

        $packedCommands = $this->packCommands($commands);

        return $this->signRequest(
            new Request($method, $this->buildUri($bucket, $name), $headers + $packedCommands),
            $packedCommands
        );
    }