*/ final class Failure implements Promise { private \Throwable $exception; /** * @param \Throwable $exception Rejection reason. */ public function __construct(\Throwable $exception) { $this->exception = $exception; } /** * {@inheritdoc} */ public function onResolve(callable $onResolved): void { Loop::defer(function () use ($onResolved): void { /** @var mixed $result */ $result = $onResolved($this->exception, null); if ($result instanceof Promise) { Promise\rethrow($result); } }); } }