Therefore, if your application depended on it, you had to figure out some way to operate for an unknown amount of time and then reconcile the app's state if you unexpectedly heard back from iCloud five minutes or an hour after the user started using the app and did a bunch of stuff.
I'm curious as to whether this has been improved since then (circa 2011).
Another issue is that Apple would throttle your application if it made too many iCloud requests in some time-frame. They refused to specify how many or how fast the requests would have to be to get you throttled, and your program would not be informed. Actually, "throttling" isn't quite right, because that implies that your calls would just be slowed down. No: iCloud calls would just start failing with "false." So, if I'm stepping through my code and there's an iCloud call in it, can I step through it five times? Three? And how quickly?