/**
* @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);
});
};
};
}