-        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];