Not quite sure if it's something we should fix but I'll bring it up for discussions sake, if the .fail handler of a server side invoke results in another server side invoke two things will happen:

1. It'll infinite loop if it continues to trigger a server side function on fail.
2. The server invoke will be rejected pre-emptively when it runs across its invocation callback.

We may want to clone the invocation callbacks before iterating over them to prevent something like this from happening.