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