|TFulfilled)) $onFulfilled * @param ?(callable(\Throwable): (PromiseInterface|TRejected)) $onRejected * @return PromiseInterface<($onRejected is null ? ($onFulfilled is null ? T : TFulfilled) : ($onFulfilled is null ? T|TRejected : TFulfilled|TRejected))> */ public function then(?callable $onFulfilled = null, ?callable $onRejected = null): PromiseInterface; /** * Registers a rejection handler for promise. It is a shortcut for: * * ```php * $promise->then(null, $onRejected); * ``` * * Additionally, you can type hint the `$reason` argument of `$onRejected` to catch * only specific errors. * * @template TThrowable of \Throwable * @template TRejected * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected * @return PromiseInterface */ public function catch(callable $onRejected): PromiseInterface; /** * Allows you to execute "cleanup" type tasks in a promise chain. * * It arranges for `$onFulfilledOrRejected` to be called, with no arguments, * when the promise is either fulfilled or rejected. * * * If `$promise` fulfills, and `$onFulfilledOrRejected` returns successfully, * `$newPromise` will fulfill with the same value as `$promise`. * * If `$promise` fulfills, and `$onFulfilledOrRejected` throws or returns a * rejected promise, `$newPromise` will reject with the thrown exception or * rejected promise's reason. * * If `$promise` rejects, and `$onFulfilledOrRejected` returns successfully, * `$newPromise` will reject with the same reason as `$promise`. * * If `$promise` rejects, and `$onFulfilledOrRejected` throws or returns a * rejected promise, `$newPromise` will reject with the thrown exception or * rejected promise's reason. * * `finally()` behaves similarly to the synchronous finally statement. When combined * with `catch()`, `finally()` allows you to write code that is similar to the familiar * synchronous catch/finally pair. * * Consider the following synchronous code: * * ```php * try { * return doSomething(); * } catch(\Exception $e) { * return handleError($e); * } finally { * cleanup(); * } * ``` * * Similar asynchronous code (with `doSomething()` that returns a promise) can be * written: * * ```php * return doSomething() * ->catch('handleError') * ->finally('cleanup'); * ``` * * @param callable(): (void|PromiseInterface) $onFulfilledOrRejected * @return PromiseInterface */ public function finally(callable $onFulfilledOrRejected): PromiseInterface; /** * The `cancel()` method notifies the creator of the promise that there is no * further interest in the results of the operation. * * Once a promise is settled (either fulfilled or rejected), calling `cancel()` on * a promise has no effect. * * @return void */ public function cancel(): void; /** * [Deprecated] Registers a rejection handler for a promise. * * This method continues to exist only for BC reasons and to ease upgrading * between versions. It is an alias for: * * ```php * $promise->catch($onRejected); * ``` * * @template TThrowable of \Throwable * @template TRejected * @param callable(TThrowable): (PromiseInterface|TRejected) $onRejected * @return PromiseInterface * @deprecated 3.0.0 Use catch() instead * @see self::catch() */ public function otherwise(callable $onRejected): PromiseInterface; /** * [Deprecated] Allows you to execute "cleanup" type tasks in a promise chain. * * This method continues to exist only for BC reasons and to ease upgrading * between versions. It is an alias for: * * ```php * $promise->finally($onFulfilledOrRejected); * ``` * * @param callable(): (void|PromiseInterface) $onFulfilledOrRejected * @return PromiseInterface * @deprecated 3.0.0 Use finally() instead * @see self::finally() */ public function always(callable $onFulfilledOrRejected): PromiseInterface; }