<?php
namespace GuzzleHttp\Handler;
+use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\HandlerStack;
use GuzzleHttp\Promise\PromiseInterface;
use GuzzleHttp\Promise\RejectedPromise;
*/
class MockHandler implements \Countable
{
- private $queue;
+ private $queue = [];
private $lastRequest;
private $lastOptions;
private $onFulfilled;
$this->lastOptions = $options;
$response = array_shift($this->queue);
+ if (isset($options['on_headers'])) {
+ if (!is_callable($options['on_headers'])) {
+ throw new \InvalidArgumentException('on_headers must be callable');
+ }
+ try {
+ $options['on_headers']($response);
+ } catch (\Exception $e) {
+ $msg = 'An error was encountered during the on_headers event';
+ $response = new RequestException($msg, $request, $response, $e);
+ }
+ }
+
if (is_callable($response)) {
$response = call_user_func($response, $request, $options);
}
$response = $response instanceof \Exception
- ? new RejectedPromise($response)
+ ? \GuzzleHttp\Promise\rejection_for($response)
: \GuzzleHttp\Promise\promise_for($response);
return $response->then(
if ($this->onRejected) {
call_user_func($this->onRejected, $reason);
}
- return new RejectedPromise($reason);
+ return \GuzzleHttp\Promise\rejection_for($reason);
}
);
}
/**
* Get the last received request options.
*
- * @return RequestInterface
+ * @return array
*/
public function getLastOptions()
{