public function when(callable $onResolved) { try { $onResolved(null, $this->value); } catch (\Throwable $exception) { Loop::defer(static function () use($exception) { throw $exception; }); } }