private static async Task <object> ExecuteMiddlewareAsync( ResolverTask resolverTask, IErrorHandler errorHandler) { object result = null; try { if (!resolverTask.FieldSelection.Field.IsIntrospectionField && resolverTask.HasMiddleware) { result = await ExecuteDirectiveMiddlewareAsync( resolverTask).ConfigureAwait(false); } else { result = await ExecuteFieldMiddlewareAsync( resolverTask).ConfigureAwait(false); } if (result is IError error) { return(errorHandler.Handle(error)); } else if (result is IEnumerable <IError> errors) { return(errorHandler.Handle(errors)); } else { return(result); } } catch (QueryException ex) { return(errorHandler.Handle(ex.Errors)); } catch (Exception ex) { ResolverDiagnosticEvents.ResolverError( resolverTask.ResolverContext, ex); return(errorHandler.Handle(ex, error => error .WithPath(resolverTask.Path) .WithSyntaxNodes(resolverTask.FieldSelection.Selection))); } }
private static async Task <object> ExecuteMiddlewareAsync( ResolverTask resolverTask, CancellationToken cancellationToken) { object result = null; try { if (!resolverTask.FieldSelection.Field.IsIntrospectionField && resolverTask.HasMiddleware) { result = await ExecuteDirectiveMiddlewareAsync( resolverTask, cancellationToken); } else { result = await ExecuteFieldMiddlewareAsync( resolverTask, cancellationToken); } } catch (QueryException ex) { result = ex.Errors; } catch (Exception ex) { ResolverDiagnosticEvents.ResolverError( resolverTask.ResolverContext, ex); result = resolverTask.CreateError(ex); } return(result); }