cancellations[$context->promise()] = $onCancel; } return $context; } function handlePromise(object $promise, callable $onResult = null, callable $onError = null) : Amp\Promise { $promise->onResolve(function($error = null, $result = null) use($onResult, $onError) { if ($error) { if ($onError) { $onError($error); } } else { if ($onResult) { $onResult($result); } } }); return $promise; } function reject(mixed $reason) : object { $this->createContext()->fail(\seekat\Exception\exception($reason)); } function rejecter(object $context) : \Closure { return function($reason) use($context) { $context->fail(exception($reason)); }; } /** * @param array $promises */ function all(array $promises) : Amp\Promise { return Amp\Promise\all($promises); } }