diff options
Diffstat (limited to 'vendor/react/promise/src/RejectedPromise.php')
-rw-r--r-- | vendor/react/promise/src/RejectedPromise.php | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/vendor/react/promise/src/RejectedPromise.php b/vendor/react/promise/src/RejectedPromise.php new file mode 100644 index 0000000..09cd4ab --- /dev/null +++ b/vendor/react/promise/src/RejectedPromise.php @@ -0,0 +1,79 @@ +<?php + +namespace React\Promise; + +/** + * @deprecated 2.8.0 External usage of RejectedPromise is deprecated, use `reject()` instead. + */ +class RejectedPromise implements ExtendedPromiseInterface, CancellablePromiseInterface +{ + private $reason; + + public function __construct($reason = null) + { + if ($reason instanceof PromiseInterface) { + throw new \InvalidArgumentException('You cannot create React\Promise\RejectedPromise with a promise. Use React\Promise\reject($promiseOrValue) instead.'); + } + + $this->reason = $reason; + } + + public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + if (null === $onRejected) { + return $this; + } + + try { + return resolve($onRejected($this->reason)); + } catch (\Throwable $exception) { + return new RejectedPromise($exception); + } catch (\Exception $exception) { + return new RejectedPromise($exception); + } + } + + public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) + { + if (null === $onRejected) { + throw UnhandledRejectionException::resolve($this->reason); + } + + $result = $onRejected($this->reason); + + if ($result instanceof self) { + throw UnhandledRejectionException::resolve($result->reason); + } + + if ($result instanceof ExtendedPromiseInterface) { + $result->done(); + } + } + + public function otherwise(callable $onRejected) + { + if (!_checkTypehint($onRejected, $this->reason)) { + return $this; + } + + return $this->then(null, $onRejected); + } + + public function always(callable $onFulfilledOrRejected) + { + return $this->then(null, function ($reason) use ($onFulfilledOrRejected) { + return resolve($onFulfilledOrRejected())->then(function () use ($reason) { + return new RejectedPromise($reason); + }); + }); + } + + public function progress(callable $onProgress) + { + return $this; + } + + public function cancel() + { + } +} |