private function emit($value) : Awaitable
{
if (null === $this->observable) {
throw new CompletedError();
}
$delayed = $this->delayed;
$placeholder = $this->placeholder;
$this->delayed = new Delayed();
$this->placeholder = new Placeholder($this->delayed);
$delayed->resolve($value);
return $placeholder->wait();
}