3 namespace seekat\API\Future
;
7 use function seekat\Exception\exception
;
9 final class Amp2
extends Common
implements Future
{
10 protected string $promiseType = Amp\Promise
::class;
12 function createContext(callable
$onCancel = null) : Amp\Deferred
{
13 $context = new Amp\
Deferred();
14 if (isset($onCancel)) {
15 $this->cancellations
[$context->promise()] = $onCancel;
20 function handlePromise(object $promise, callable
$onResult = null, callable
$onError = null) : Amp\Promise
{
21 $promise->onResolve(function($error = null, $result = null) use($onResult, $onError) {
35 function reject(mixed $reason) : object {
36 $this->createContext()->fail(\seekat\Exception\
exception($reason));
39 function rejecter(object $context) : \Closure
{
40 return function($reason) use($context) {
41 $context->fail(exception($reason));
46 * @param array<Amp\Promise> $promises
48 function all(array $promises) : Amp\Promise
{
49 return Amp\Promise\all
($promises);