GridServiceProxy uses compute for remote invocation. In some cases an exception on server side can cause the closure execution never finish. For example, this happens when the exception is thrown during the serialization of the result.
Need to add additional IgniteServices.serviceProxy(..) method that will additionally allow to specify custom timeout.
This timeout should limit the number of retries (there is an infinite loop now) and also be passed to callAsyncNoFailover to avoid hangs.