public function abort()
    {
        if ($this->aborted) {
            return;
        }

        $this->aborted = true;
        $this->onWakeup();
        $this->onAbort();

        if ((ignore_user_abort() === 1)
            && (($this->state === Generic::STATE_RUNNING) || ($this->state === Generic::STATE_WAITING))
            && !Daemon::$compatMode
        ) {
            $this->upstream->endRequest($this);
        } else {
            $this->finish(-1);
        }

        $this->onSleep();
    }