private Task <ObjectResult <T> > GetResultsAsync(
            MergeOption?forMergeOption,
            CancellationToken cancellationToken)
        {
            cancellationToken.ThrowIfCancellationRequested();
            this.QueryState.ObjectContext.AsyncMonitor.EnsureNotEntered();
            IDbExecutionStrategy executionStrategy = this.ExecutionStrategy ?? DbProviderServices.GetExecutionStrategy(this.QueryState.ObjectContext.Connection, this.QueryState.ObjectContext.MetadataWorkspace);

            if (executionStrategy.RetriesOnFailure && this.QueryState.EffectiveStreamingBehavior)
            {
                throw new InvalidOperationException(Strings.ExecutionStrategy_StreamingNotSupported((object)executionStrategy.GetType().Name));
            }
            return(this.GetResultsAsync(forMergeOption, executionStrategy, cancellationToken));
        }
        private ObjectResult <T> GetResults(MergeOption?forMergeOption)
        {
            this.QueryState.ObjectContext.AsyncMonitor.EnsureNotEntered();
            IDbExecutionStrategy executionStrategy = this.ExecutionStrategy ?? DbProviderServices.GetExecutionStrategy(this.QueryState.ObjectContext.Connection, this.QueryState.ObjectContext.MetadataWorkspace);

            if (executionStrategy.RetriesOnFailure && this.QueryState.EffectiveStreamingBehavior)
            {
                throw new InvalidOperationException(Strings.ExecutionStrategy_StreamingNotSupported((object)executionStrategy.GetType().Name));
            }
            return(executionStrategy.Execute <ObjectResult <T> >((Func <ObjectResult <T> >)(() => this.QueryState.ObjectContext.ExecuteInTransaction <ObjectResult <T> >((Func <ObjectResult <T> >)(() => this.QueryState.GetExecutionPlan(forMergeOption).Execute <T>(this.QueryState.ObjectContext, this.QueryState.Parameters)), executionStrategy, false, !this.QueryState.EffectiveStreamingBehavior))));
        }