public async ValueTask InvokeAsync(IRequestContext context) { if (context.DocumentId is null) { await _next(context).ConfigureAwait(false); } else { var addToCache = true; var operationId = context.OperationId; if (operationId is null) { operationId = CreateOperationId( context.DocumentId, context.Request.OperationName); context.OperationId = operationId; } string cacheId = context.CreateCacheId(operationId); if (_operationCache.TryGetOperation(cacheId, out IPreparedOperation? operation)) { context.Operation = operation; addToCache = false; _diagnosticEvents.RetrievedOperationFromCache(context); } await _next(context).ConfigureAwait(false); if (addToCache && context.Operation is not null && context.DocumentId is not null && context.Document is not null && context.IsValidDocument) { _operationCache.TryAddOperation(cacheId, context.Operation); _diagnosticEvents.AddedOperationToCache(context); } } }