public function getPromiseTestAdapter(callable $canceller = null)
{
$promise = null;
return new CallbackPromiseAdapter(['promise' => function () use(&$promise) {
if (!$promise) {
throw new \LogicException('FulfilledPromise must be resolved before obtaining the promise');
}
return $promise;
}, 'resolve' => function ($value = null) use(&$promise) {
if (!$promise) {
$promise = new FulfilledPromise($value);
}
}, 'reject' => function () {
throw new \LogicException('You cannot call reject() for React\\Promise\\FulfilledPromise');
}, 'settle' => function ($value = null) use(&$promise) {
if (!$promise) {
$promise = new FulfilledPromise($value);
}
}]);
}