public override async Task <bool> ReadAsync(CancellationToken cancellationToken)
        {
            await WaitIfConnectingAsync().ConfigureAwait(false);

            ThrowIfAny();

            // if we only want the schema ... then there is nothing to read
            if ((_commandBehavior & CommandBehavior.SchemaOnly) != 0)
            {
                return(false);
            }

            // if the caller only wants one row
            // then there is nothing else for us to read
            if ((_commandBehavior & CommandBehavior.SingleRow) != 0)
            {
                if (_rowsRead >= 1)
                {
                    return(false);
                }
            }

            if (!await _worker.ReadAsync(cancellationToken).ConfigureAwait(false))
            {
                return(false);
            }

            // we did read this row
            ++_rowsRead;
            return(true);
        }