__call('then', [$onFulfilled, $onRejected]); } #[\Override] public function otherwise(callable $onRejected): PromiseInterface { return $this->__call('otherwise', [$onRejected]); } #[\Override] public function resolve($value): void { $this->guzzlePromise->resolve($value); } #[\Override] public function reject($reason): void { $this->guzzlePromise->reject($reason); } #[\Override] public function cancel(): void { $this->guzzlePromise->cancel(); } #[\Override] public function wait(bool $unwrap = true) { return $this->__call('wait', [$unwrap]); } #[\Override] public function getState(): string { return $this->guzzlePromise->getState(); } /** * Get the underlying Guzzle promise. * * @return \GuzzleHttp\Promise\PromiseInterface */ public function getGuzzlePromise(): PromiseInterface { return $this->guzzlePromise; } /** * Proxy requests to the underlying promise interface and update the local promise. * * @param string $method * @param array $parameters * @return mixed */ public function __call($method, $parameters) { $result = $this->forwardCallTo($this->guzzlePromise, $method, $parameters); if (! $result instanceof PromiseInterface) { return $result; } $this->guzzlePromise = $result; return $this; } }