/** * @param \Ikwattro\GuzzleStereo\Recorder * * @return callable */ public static function record(Recorder $recorder) { return function (callable $handler) use($recorder) { return function ($request, array $options) use($handler, $recorder) { return $handler($request, $options)->then(function ($response) use($request, $recorder) { $recorder->record($response); return $response; }, function ($reason) use($request, $recorder) { $response = $reason instanceof RequestException ? $reason->getResponse() : null; if ($response) { $recorder->record($response); } return \GuzzleHttp\Promise\rejection_for($reason); }); }; }; }