Why does it always return > 1? Is that because the drain_events method will not call the rest if it cannot consume?  In that case maybe it makes more sense for the caller to do `max(can_consume_max_estimate(), 1)`