Refactored to use Guzzle directly (with tiny layer over its interfaces) rather than leave open the possiblity of other HTTP Client transports.