The example shows it only tries to do something with the current deliveryTag. Shouldn't the example show that it tries to do something with all the items below it instead of clearing them out?
var nacked = outstandingConfirms.Where(k => k.Key <= sequenceNumber);
foreach (var entry in nacked)
{
outstandingConfirms.TryRemove(entry.Key, out x);
Console.WriteLine($"Message has been nack-ed. Sequence number: {entry.Key}, multiple: {ea.Multiple}");