private final ConcurrentLinkedQueue<PushContextListener> listeners = new ConcurrentLinkedQueue<PushContextListener>();
private final MetaBroadcaster broadcaster = MetaBroadcaster.getDefault();
public <T> Future<T> push(final String channel, final T t) {
String data = toJSON(t);
final BroadcasterListener l = new PushContextMetaListener<T>(listeners, channel, t);
final Future<?> f = broadcaster.addBroadcasterListener(l).broadcastTo(channel, data);
finalizePush(f, l);
return new WrappedFuture<T>(f, t);
}