public function then(callable $onFulfilled = null, callable $onRejected = null) : Awaitable
{
if (null === $onFulfilled) {
return $this;
}
try {
$result = $onFulfilled($this->value);
} catch (Throwable $exception) {
return new RejectedAwaitable($exception);
}
if (!$result instanceof Awaitable) {
$result = new self($result);
}
return $result;
}