public function stop() : Promise
{
switch ($this->state) {
case self::STARTED:
$stopPromise = resolve($this->doStop());
return timeout($stopPromise, $this->options->shutdownTimeout);
case self::STOPPED:
return new Success();
default:
return new Failure(new \LogicException("Cannot stop server: currently " . self::STATES[$this->state]));
}
}