public static void DispatchAndListen(this IEventDispatcher dispatcher, object requestEvent, object returnEvent, EmptyCallback callback)
 {
     dispatcher.ListenOnceForOne(returnEvent, callback);
     dispatcher.Dispatch(requestEvent);
 }
 public static void DispatchAndListen(this IEventDispatcher dispatcher, Action requestAction, params BaseEventListener[] listeners)
 {
     dispatcher.ListenOnceForOne(listeners);
     requestAction.Invoke();
 }
 public static void DispatchAndListen(this IEventDispatcher dispatcher, ER requester, params BaseEventListener[] listeners)
 {
     dispatcher.ListenOnceForOne(listeners);
     requester.Dispatch(dispatcher);
 }
 public static void DispatchAndListen(this IEventDispatcher dispatcher, object requestEvent, params BaseEventListener[] listeners)
 {
     dispatcher.ListenOnceForOne(listeners);
     dispatcher.Dispatch(requestEvent);
 }
 public static void DispatchAndListen <E>(this IEventDispatcher dispatcher, Action requestAction, object returnEvent, Action <E> callback)
 {
     dispatcher.ListenOnceForOne(returnEvent, callback);
     requestAction.Invoke();
 }
 public static void DispatchAndListen <E>(this IEventDispatcher dispatcher, ER requester, object returnEvent, Action <E> callback)
 {
     dispatcher.ListenOnceForOne(returnEvent, callback);
     requester.Dispatch(dispatcher);
 }