Came here to post this, though the quote that caught my eye was this one:
It’s clear that apps and other software that could issue multiple requests of CloudKit over a short period, or could trigger a pattern of requests that iCloud doesn’t like, could be responsible for situations in which syncing of shared data with iCloud is put on hold. Unless the client app responds appropriately to that throttling, you could be advised incorrectly that iCloud isn’t available, or worse still the sync could simply fail silently.