Seems like the same thing could be achieved cleanly with chainable results. My quick & dirty c# example.
For.Loop(10, (i, @break) =>
{
Console.WriteLine(i);
@break();
})
.OnComplete((i) => Console.WriteLine("Done"))
.OnBreak((i) => Console.WriteLine("Break"));