constructor(route, raw_request) {
        // Store reference to the route of this request and the raw uWS.HttpResponse instance for certain operations
        this.route = route;
        this._raw_request = raw_request;

        // Cache request properties from uWS.HttpRequest as it is stack allocated and will be deallocated after this function returns
        this._query = raw_request.getQuery();
        this._path = route.path || raw_request.getUrl();
        this._method = route.method !== 'ANY' ? route.method : raw_request.getMethod();

        // Cache request headers from uWS.HttpRequest as it is stack allocated and will be deallocated after this function returns
        raw_request.forEach((key, value) => (this.headers[key] = value));

        // Cache the path parameters from the route pattern if any as uWS.HttpRequest will be deallocated after this function returns
        const num_path_parameters = route.path_parameters_key.length;
        if (num_path_parameters) {
            this._path_parameters = {};
            for (let i = 0; i < num_path_parameters; i++) {
                const parts = route.path_parameters_key[i];
                this._path_parameters[parts[0]] = raw_request.getParameter(parts[1]);
            }
        }
    }
Creates a new HyperExpress request instance that wraps a uWS.HttpRequest instance.

@param {import('../router/Route.js')} route
@param {import('uWebSockets.js').HttpRequest} raw_request