// methods private Task <CursorBatch <TDocument> > ExecuteProtocolAsync(IChannelHandle channel, BsonDocument wrappedQuery, bool slaveOk, CancellationToken cancellationToken) { var firstBatchSize = QueryHelper.CalculateFirstBatchSize(_limit, _batchSize); return(channel.QueryAsync <TDocument>( _collectionNamespace, wrappedQuery, _projection, NoOpElementNameValidator.Instance, _skip ?? 0, firstBatchSize, slaveOk, _allowPartialResults, _noCursorTimeout, _cursorType != CursorType.NonTailable, // tailable _cursorType == CursorType.TailableAwait, //await data _resultSerializer, _messageEncoderSettings, cancellationToken)); }