public function getPromiseTestAdapter(callable $canceller = null)
{
$d = new Deferred($canceller);
$factory = function () use($d) {
return $d->promise();
};
return new CallbackPromiseAdapter(['promise' => function () use($factory) {
return new LazyPromise($factory);
}, 'resolve' => [$d, 'resolve'], 'reject' => [$d, 'reject'], 'settle' => [$d, 'resolve']]);
}