Let's start with the code.
sub calc_meta_scan { my $self = shift; $self->chosen_scans([]); $self->total_boards_solved(0); $self->total_iters(0); $self->status("iterating"); my $quotas = [ @{$self->get_quotas()} ]; # $self->inspect_quota() throws ::Error::OutOfQuotas if # it does not have any available quotas. try { while ($self->status() eq "iterating") { $self->inspect_quota($quotas); } } catch Shlomif::FCS::CalcMetaScan::Error::OutOfQuotas with { } }