Publicar un archivo en un servicio web con Guzzle

Llevo varias horas intentando hacer una solicitud POST que envíe un archivo.

Primero probé un simplefile_get_contents() Con el contexto de la corriente, no parece funcionar. Nunca recibo una respuesta mientras el GET en una URL diferente funciona.

Busqué en la web un cliente HTTP y encontré Guzzle que se descargó 400k veces en Packagist; Decidí probar esta tecnología. Está bien documentado pero, por desgracia, también se produce un error al publicar ese maldito archivo.

$request = $client
    ->post('/files/')
    ->addPostFields(array('comments' => 'no value'))
    ->addPostFile('file', 'test.doc')
    ->setAuth($this->username, $this->password);

Me tomó horas de leer y rastrear la web para descubrir que tenía un problema de "Fallo en la expectativa 417".

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>417 Expectation Failed</title>
</head><body>
<h1>Expectation Failed</h1>
<p>The expectation given in the Expect request-header
field could not be met by this server.
The client sent<pre>
    Expect: 100-Continue, 100-Continue
</pre>
</p><p>Only the 100-continue expectation is supported.</p>
</body></html>

Después de buscar más en la web, terminé leyendo el encabezado "Esperar: 100-continuar" que Guzzle envió automáticamente, así que intenté:

$request->removeHeader('expect');

Ahora termino con una mala petición:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Request header field is missing ':' separator.<br />
<pre>
zzle/3.7.3 curl/7.15.5 PHP/5.3.27</pre>
</p>
</body></html>

Imprimiendo los encabezados de solicitud para encontrar que: faltante, obtengo:

var_dump($request->__toString());

POST /files/ HTTP/1.1
Host: nunc57.qc.bell.ca
User-Agent: Guzzle/3.7.3 curl/7.15.5 PHP/5.3.27
Content-Type: multipart/form-data
Authorization: Basic bm92YTpzeW5hcHNl

Ahora estoy realmente perplejo, espero que alguien ya haya encontrado una solución a este problema. Me estoy cansando de todo esto :(