public async Task <HttpRequestMessage> Map(HttpContext context, ReRoute route)
        {
            var downstreamUri = route.GetDownstreamUri(context);

            var requestMessage = new HttpRequestMessage(route.DownstreamMethod, downstreamUri);

            requestMessage.Content = MapContent(context, route);

            foreach (var header in context.Request.Headers.Where(x => !x.Key.StartsWith("Content-")))
            {
                requestMessage.Headers.Add(header.Key, header.Value.ToArray());
            }


            var headerModifications = route.GetRequestHeaderModifications();

            foreach (var headerAction in headerModifications)
            {
                headerAction(requestMessage.Headers);
            }


            // This could be also done in the startup in headerModifications, but I leave it here for clarity

            TokenBuilder tokenBuilder = TokenBuilder.Instance;
            string       XCToken      = await tokenBuilder.GetXCAccessToken(route.TokenUserId());

            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", XCToken);

            return(requestMessage);
        }