private async Task ExecuteAsync(CancellationToken cancellationToken) { try { using (DiagnosticEvents.ResolveFieldValue(_resolverContext)) { var success = await TryExecuteAsync(cancellationToken).ConfigureAwait(false); CompleteValue(success, cancellationToken); } Status = _completionStatus; } catch { // If an exception occurs on this level it means that something was wrong with the // operation context. // In this case we will mark the task as faulted and set the result to null. // However, we will not report or rethrow the exception since the context was already // destroyed and we would cause further exceptions. // The exception on this level is most likely caused by a cancellation of the request. Status = ExecutionTaskStatus.Faulted; _resolverContext.Result = null; } _operationContext.Scheduler.Complete(this); _objectPool.Return(this); }
private async Task ExecuteAsync(CancellationToken cancellationToken) { try { using (DiagnosticEvents.ResolveFieldValue(ResolverContext)) { var success = await TryExecuteAsync(cancellationToken).ConfigureAwait(false); CompleteValue(success, cancellationToken); } Status = _completionStatus; } catch { Status = ExecutionTaskStatus.Faulted; // we suppress any exception if the cancellation was requested. if (!cancellationToken.IsCancellationRequested) { throw; } } finally { OperationContext.Scheduler.Complete(this); _objectPool.Return(this); } }