update to PHP-8.1
[m6w6/seekat] / lib / API / Future / React2.php
1 <?php
2
3 namespace seekat\API\Future;
4
5 use seekat\API\Future;
6 use React;
7
8 final class React2 extends Common implements Future {
9 protected string $promiseType = React\Promise\Promise::class;
10
11 function createContext(callable $onCancel = null) : React\Promise\PromisorInterface {
12 $context = new React\Promise\Deferred($onCancel);
13 if (isset($onCancel)) {
14 $this->cancellations[$context->promise()] = $context->promise()->cancel(...);
15 }
16 return $context;
17 }
18
19 function handlePromise(object $promise, callable $onResult = null, callable $onError = null) : React\Promise\PromiseInterface {
20 return $promise->then($onResult, $onError);
21 }
22
23 function reject(mixed $reason) : object {
24 $context = $this->createContext();
25 $context->reject($reason);
26 return $context->promise();
27 }
28
29 function rejecter(object $context) : \Closure {
30 return function($reason) use($context) {
31 $context->reject($reason);
32 };
33 }
34
35 /**
36 * @param array<React\Promise\PromiseInterface> $promises
37 * @return React\Promise\PromiseInterface
38 */
39 function all(array $promises) : React\Promise\PromiseInterface {
40 return React\Promise\all($promises);
41 }
42 }