/// <summary>Pop the next item from the queue. Cannot be composed with other functions in a single transaction.</summary>
            public async Task <(T Value, bool HasValue)> PopAsync(IFdbTransaction tr)
            {
                Contract.NotNull(tr, nameof(tr));
#if DEBUG
                tr.Annotate("Pop()");
#endif

                var first = await tr.GetRangeAsync(this.Subspace.ToRange(), SingleOptions);

                if (first.IsEmpty)
                {
#if DEBUG
                    tr.Annotate("Got nothing");
#endif
                    return(default);
 public virtual Task <FdbRangeChunk> GetRangeAsync(KeySelector beginInclusive, KeySelector endExclusive, FdbRangeOptions options = null, int iteration = 0)
 {
     ThrowIfDisposed();
     return(m_transaction.GetRangeAsync(beginInclusive, endExclusive, options, iteration));
 }