public async ValueTask InvokeAsync(IRequestContext context) { if (context.Document is null && context.Request.Query is not null) { var success = true; try { using (_diagnosticEvents.ParseDocument(context)) { context.DocumentId = ComputeDocumentHash( context.DocumentHash, context.Request.QueryHash, context.Request.Query); context.Document = ParseDocument(context.Request.Query); } } catch (SyntaxException ex) { success = false; IError error = context.ErrorHandler.Handle( ErrorBuilder.New() .SetMessage(ex.Message) .SetCode(ErrorCodes.Execution.SyntaxError) .AddLocation(ex.Line, ex.Column) .Build()); context.Exception = ex; context.Result = QueryResultBuilder.CreateError(error); _diagnosticEvents.SyntaxError(context, error); } if (success) { await _next(context).ConfigureAwait(false); } }