public function halt(HaltPropagationException $exception = null)
    {
        if ($this->haltEvent !== "") {
            $pointer = $this->middleware instanceof MiddlewareCollection ? $this->middleware->current() : $this->middleware;
            $event = $this->haltEvent;

            if (is_callable(static::$eventCallable)) {
                static::$eventCallable(new $event($pointer, $exception));
            }
        }

        if ($exception !== null && ! $this->catchHalt) {
            throw $exception;
        }

        return $this;
    }