public function then(callable $onFulfilled = null, callable $onRejected = null) { if (null === $onRejected) { return $this; } try { return new HttpFulfilledPromise($onRejected($this->exception)); } catch (Exception $e) { return new self($e); } }