The whole point of the problem is that you're not allowed to use timeouts and stuff to get a work around. Adding timeouts etc fundamentally changes the situation. The distributed systems on the Internet you see do not solve the problem - they work around it, basically by adding failure modes not present in the original.