promise() * @see PromiseResolver * @phpstan-param PromiseSharedData $shared */ public function __construct(private PromiseSharedData $shared){} /** * @phpstan-param \Closure(TValue) : void $onSuccess * @phpstan-param \Closure() : void $onFailure */ public function onCompletion(\Closure $onSuccess, \Closure $onFailure) : void{ if($this->shared->resolved){ $this->shared->result === null ? $onFailure() : $onSuccess($this->shared->result); }else{ $this->shared->onSuccess[spl_object_id($onSuccess)] = $onSuccess; $this->shared->onFailure[spl_object_id($onFailure)] = $onFailure; } } public function isResolved() : bool{ return $this->shared->resolved; } }