FulfilledPromise.php in Lockr 7.3
File
vendor/guzzlehttp/promises/src/FulfilledPromise.php
View source
<?php
namespace GuzzleHttp\Promise;
class FulfilledPromise implements PromiseInterface {
private $value;
public function __construct($value) {
if (method_exists($value, 'then')) {
throw new \InvalidArgumentException('You cannot create a FulfilledPromise with a promise.');
}
$this->value = $value;
}
public function then(callable $onFulfilled = null, callable $onRejected = null) {
if (!$onFulfilled) {
return $this;
}
$queue = queue();
$p = new Promise([
$queue,
'run',
]);
$value = $this->value;
$queue
->add(static function () use ($p, $value, $onFulfilled) {
if ($p
->getState() === self::PENDING) {
try {
$p
->resolve($onFulfilled($value));
} catch (\Throwable $e) {
$p
->reject($e);
} catch (\Exception $e) {
$p
->reject($e);
}
}
});
return $p;
}
public function otherwise(callable $onRejected) {
return $this
->then(null, $onRejected);
}
public function wait($unwrap = true, $defaultDelivery = null) {
return $unwrap ? $this->value : null;
}
public function getState() {
return self::FULFILLED;
}
public function resolve($value) {
if ($value !== $this->value) {
throw new \LogicException("Cannot resolve a fulfilled promise");
}
}
public function reject($reason) {
throw new \LogicException("Cannot reject a fulfilled promise");
}
public function cancel() {
}
}