Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Completed
Push — master ( eed88d...353bdf )
by Jérémiah
47s
created

ReactPromiseAdapter::convertThenable()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 4
cts 4
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 1
crap 2
1
<?php
2
3
/*
4
 * This file is part of the OverblogGraphQLBundle package.
5
 *
6
 * (c) Overblog <http://github.com/overblog/>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Overblog\GraphQLBundle\Executor\Promise\Adapter;
13
14
use GraphQL\Executor\ExecutionResult;
15
use GraphQL\Executor\Promise\Adapter\ReactPromiseAdapter as BaseReactPromiseAdapter;
16
use GraphQL\Executor\Promise\Promise;
17
use Overblog\GraphQLBundle\Executor\Promise\PromiseAdapterInterface;
18
19
class ReactPromiseAdapter extends BaseReactPromiseAdapter implements PromiseAdapterInterface
20
{
21
    /**
22
     * {@inheritdoc}
23
     */
24 10
    public function isThenable($value)
25
    {
26 10
        return parent::isThenable($value instanceof Promise ? $value->adoptedPromise : $value);
27
    }
28
29
    /**
30
     * {@inheritdoc}
31
     */
32 9
    public function convertThenable($thenable)
33
    {
34 9
        if ($thenable instanceof Promise) {
35 9
            return $thenable;
36
        }
37
38 9
        return parent::convertThenable($thenable);
39
    }
40
41
    /**
42
     * Synchronously wait when promise completes.
43
     *
44
     * @param Promise $promise
45
     *
46
     * @return ExecutionResult
47
     *
48
     * @throws \Exception
49
     */
50 10
    public function wait(Promise $promise)
51
    {
52 10
        if (!$this->isThenable($promise)) {
53
            return;
54
        }
55 10
        $wait = true;
56 10
        $resolvedValue = null;
57 10
        $exception = null;
58
        /** @var \React\Promise\PromiseInterface $reactPromise */
59 10
        $reactPromise = $promise->adoptedPromise;
60
61 10
        while ($wait) {
62
            $reactPromise->then(function ($values) use (&$resolvedValue, &$wait) {
63 10
                $resolvedValue = $values;
64 10
                $wait = false;
65 10
            }, function ($reason) use (&$exception, &$wait) {
66
                $exception = $reason;
67
                $wait = false;
68 10
            });
69 10
        }
70
71 10
        if ($exception instanceof \Exception) {
72
            throw $exception;
73
        }
74
75 10
        return $resolvedValue;
76
    }
77
}
78