Skip to content

Commit 2c4c576

Browse files
committed
Use newer Promise API instead of legacy Deferreds
Closes #4
1 parent abc508d commit 2c4c576

1 file changed

Lines changed: 21 additions & 25 deletions

File tree

src/functions.php

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,43 +2,39 @@
22

33
namespace Clue\Promise\Timeout;
44

5-
use React\Promise\Deferred;
65
use React\Promise\CancellablePromiseInterface;
76
use React\EventLoop\LoopInterface;
87
use React\Promise\PromiseInterface;
8+
use React\Promise\Promise;
99

1010
function await(PromiseInterface $promise, $time, LoopInterface $loop)
1111
{
12-
$deferred = new Deferred();
13-
14-
$timer = $loop->addTimer($time, function () use ($time, $promise, $deferred) {
15-
$deferred->reject(new TimeoutException($time, 'Timed out after ' . $time . ' seconds'));
16-
17-
if ($promise instanceof CancellablePromiseInterface) {
18-
$promise->cancel();
19-
}
20-
});
21-
22-
$promise->then(function ($v) use ($timer, $loop, $deferred) {
23-
$loop->cancelTimer($timer);
24-
$deferred->resolve($v);
25-
}, function ($v) use ($timer, $loop, $deferred) {
26-
$loop->cancelTimer($timer);
27-
$deferred->reject($v);
12+
return new Promise(function ($resolve, $reject) use ($loop, $time, $promise) {
13+
$timer = $loop->addTimer($time, function () use ($time, $promise, $reject) {
14+
$reject(new TimeoutException($time, 'Timed out after ' . $time . ' seconds'));
15+
16+
if ($promise instanceof CancellablePromiseInterface) {
17+
$promise->cancel();
18+
}
19+
});
20+
21+
$promise->then(function ($v) use ($timer, $loop, $resolve) {
22+
$loop->cancelTimer($timer);
23+
$resolve($v);
24+
}, function ($v) use ($timer, $loop, $reject) {
25+
$loop->cancelTimer($timer);
26+
$reject($v);
27+
});
2828
});
29-
30-
return $deferred->promise();
3129
}
3230

3331
function resolve($time, LoopInterface $loop)
3432
{
35-
$deferred = new Deferred();
36-
37-
$timer = $loop->addTimer($time, function () use ($time, $deferred) {
38-
$deferred->resolve($time);
33+
return new Promise(function ($resolve) use ($loop, $time) {
34+
$loop->addTimer($time, function () use ($time, $resolve) {
35+
$resolve($time);
36+
});
3937
});
40-
41-
return $deferred->promise();
4238
}
4339

4440
function reject($time, LoopInterface $loop)

0 commit comments

Comments
 (0)