First, you might reconsider the framing of the problem. The way you described it, if the user draws an object but the server doesn’t receive it, then the object was never drawn. From a UX standpoint this is precisely backwards, a system-oriented way of thinking. UX is user-centered.
The system is not the authority, the user is. An object is drawn as soon as the user draws it. He performed all the right actions and saw all the right feedback, so the case is closed and the user’s job is donedone—no waiting involved. If the system isn’t up to date on the facts, that’s the system’s problem.
If the system can’t self-correct in a timely fashion, the user must be notified. But he shouldn’t have to re-draw anything, or perform any further action. Instead, the system should attempt to re-send the drawing. There’s no reason to punish the user for the system’s shortcoming by making him do the same work over again.
If the nature of the product is highly timing-sensitive and users need quick feedback, you could use a combination of well-timed animations for a “sleight-of-hand” effect (animations that take up time while latency-intensive operations are happening) and the “skeleton screens” concept (LukeW: Mobile Design Details: Avoid The Spinner) to cover over latency-related issues for a few seconds. This helps prop up the illusion of a flawless system in the mind of the user, and prevents him from worrying about technical details that have nothing to do with him.