/**
* Create a deferred promise for the response of $request
*
* @param API $api The endpoint of the request
* @param Client $client The HTTP client to send the request
* @param Request $request The request to execute
*/
function __construct(API $api, Client $client, Request $request)
{
$this->api = $api;
$this->client = $client;
$this->request = $request;
parent::__construct(function ($resolve, $reject) {
return $this->cancel($resolve, $reject);
});
$client->attach($this);
$client->enqueue($request, function (Response $response) {
$this->response = $response;
$this->complete([$this, "resolve"], [$this, "reject"]);
return true;
});
/* start off */
$client->once();
}