using System; namespace Roblox.Common { public class Request { public static Result GetResponse(Action responseHandler, IAsyncResult asyncResult) { try { responseHandler(asyncResult); return new Result(CompletionSignal.Instance); } catch (Exception ex) { return new Result(ex); } } public static Result GetResponse(Func responseHandler, IAsyncResult asyncResult) { try { return new Result(responseHandler(asyncResult)); } catch (Exception ex) { return new Result(ex); } } public static void HandleResponse(Func beginHandler, Action endHandler, Action> resultHandler) { beginHandler(ar => resultHandler(GetResponse(endHandler, ar)), null); } public static void HandleResponse(Func beginHandler, Arg0 arg0, Action endHandler, Action> resultHandler) { HandleResponse((c, s) => beginHandler(arg0, c, s), endHandler, resultHandler); } public static void HandleResponse(Func beginHandler, Arg0 arg0, Arg1 arg1, Action endHandler, Action> resultHandler) { HandleResponse((c, s) => beginHandler(arg0, arg1, c, s), endHandler, resultHandler); } public static void HandleResponse(Func beginHandler, Arg0 arg0, Arg1 arg1, Arg2 arg2, Action endHandler, Action> resultHandler) { HandleResponse((c, s) => beginHandler(arg0, arg1, arg2, c, s), endHandler, resultHandler); } public static void HandleResponse(Func beginHandler, Func endHandler, Action> resultHandler) { beginHandler(ar => resultHandler(GetResponse(endHandler, ar)), null); } public static void HandleResponse(Func beginHandler, Arg0 arg0, Func endHandler, Action> resultHandler) { HandleResponse((c, s) => beginHandler(arg0, c, s), endHandler, resultHandler); } public static void HandleResponse(Func beginHandler, Arg0 arg0, Arg1 arg1, Func endHandler, Action> resultHandler) { HandleResponse((c, s) => beginHandler(arg0, arg1, c, s), endHandler, resultHandler); } public static void HandleResponse(Func beginHandler, Arg0 arg0, Arg1 arg1, Arg2 arg2, Func endHandler, Action> resultHandler) { HandleResponse((c, s) => beginHandler(arg0, arg1, arg2, c, s), endHandler, resultHandler); } } }