- UIProgressHUD *hud([delegate_ addProgressHUD]);
- [hud setText:UCLocalize("LOADING")];
- [self yieldToSelector:@selector(_reloadPackages:) withObject:packages];
- [delegate_ removeProgressHUD:hud];
+ UIProgressHUD *hud;
+
+ if (![self shouldBlock])
+ hud = nil;
+ else {
+ hud = [delegate_ addProgressHUD];
+ [hud setText:UCLocalize("LOADING")];
+ }
+
+ do {
+ reloading_ = 1;
+ packages_ = [self yieldToSelector:@selector(_reloadPackages:) withObject:packages];
+ } while (reloading_ == 2);
+
+ reloading_ = 0;
+
+ if (hud != nil)
+ [delegate_ removeProgressHUD:hud];