private async Task ExecuteAsync(RequestSession session) { try { IOperationResultBuilder <TData, TResult> resultBuilder = _resultBuilder(); await foreach (var response in _connection.ExecuteAsync(_request, session.Token).ConfigureAwait(false)) { if (session.Token.IsCancellationRequested) { return; } _operationStore.Set(_request, resultBuilder.Build(response)); if (_request.Document.Kind == OperationKind.Subscription) { _operationStore.ClearResult <TResult>(_request); } } } finally { session.Dispose(); } }
public void Dispose() { if (!_disposed) { _requestSession.Dispose(); _storeSession.Dispose(); _disposed = true; } }