I've been working on, what should be for most users, an almost entirely backwards compatible update to Guzzle which adds the following enhancements:
1. Asynchronous future responses and makes it easier to create new adapters (e.g., curl, stream wrapper, sockets, etc). The async support works in a completely backwards compatible way to the existing synchronous workflow of Guzzle, but now provides the ability to use Guzzle with non-blocking libraries (e.g., React).
2. Compatible with the latest PSR-7 updates. If the PSR-7 proposal remains mostly unchanged, then Guzzle can later extend from the PSR-7 message interfaces in a backwards compatible way.
3. Added a new terminal "end" event to requests that is only emitted once per request, making it easier to work with only the end-result of a message (complete and error can be emitted N number of times).
This updated version of Guzzle uses a new project to manage the adapter layer to make it easier to implement custom adapters without having to know anything about the internals of Guzzle (see: http://mtdowling.com/blog/2014/09/28/guzzle-ring/).
A full list of changes can be found here: https://github.com/guzzle/guzzle/blob/ring/CHANGELOG.md#500-tbd. As you can see, for most users, this update should be a no-op.
I was hoping that if I tagged version 5 in the next few days that Drupal 8 could update to use it. The reason I think it's important that Drupal updates to this new version is that we are working on a new version of the AWS SDK for PHP that will rely on Guzzle ~5. This new version is something Drupal users are going to want to use over the previous version because it provides significant improvements is also mostly backwards compatible to its previous version. I can submit a patch to Goutte to update to version 5 (it should just be a matter of updating the composer.json file).
Please let me know what I can do to help make this happen.