public override async Task <bool> ReadAsync(CancellationToken cancellationToken) { CheckState(); if (IsCommandBehavior(CommandBehavior.SchemaOnly)) { return(false); } else if (IsCommandBehavior(CommandBehavior.SingleRow) && _position != StartPosition) { return(false); } else { using (var explicitCancellation = ExplicitCancellation.Enter(cancellationToken, _command.Cancel)) { _row = await _command.FetchAsync(explicitCancellation.CancellationToken).ConfigureAwait(false); if (_row != null) { _position++; return(true); } else { _eof = true; return(false); } } } }