It looks like the network activity indicator was tying up the run loop that MBProgressHud uses.
I ended up using this technique to allow the MBProgressHud time to show before the indicator ties up the loop again.
- (void)showProgressHud
{
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD showHUDAddedTo:self.streamTableView animated:YES];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantPast]];
});
}