public function addRoute(string $method, string $uri, RequestHandler $requestHandler, Middleware ...$middlewares) {
        if ($this->running) {
            throw new \Error(
                "Cannot add routes once the server has started"
            );
        }

        if ($method === "") {
            throw new \Error(
                __METHOD__ . "() requires a non-empty string HTTP method at Argument 1"
            );
        }

        if ($requestHandler instanceof ServerObserver) {
            $this->observers->attach($requestHandler);
        }

        if (!empty($middlewares)) {
            foreach ($middlewares as $middleware) {
                if ($middleware instanceof ServerObserver) {
                    $this->observers->attach($middleware);
                }
            }

            $requestHandler = Middleware\stack($requestHandler, ...$middlewares);
        }

        $this->routes[] = [$method, \ltrim($uri, "/"), $requestHandler];
    }