public Future<Void> unsubscribe(final UTF8Buffer[] topics) {
   final Promise<Void> future = new Promise<Void>();
   next.getDispatchQueue()
       .execute(
           new Task() {
             public void run() {
               next.unsubscribe(topics, future);
             }
           });
   return future;
 }
 public Future<byte[]> subscribe(final Topic[] topics) {
   final Promise<byte[]> future = new Promise<byte[]>();
   next.getDispatchQueue()
       .execute(
           new Task() {
             public void run() {
               next.subscribe(topics, future);
             }
           });
   return future;
 }
 public Future<Void> kill() {
   final Promise<Void> future = new Promise<Void>();
   next.getDispatchQueue()
       .execute(
           new Task() {
             public void run() {
               next.kill(future);
             }
           });
   return future;
 }
 public Future<Void> publish(
     final UTF8Buffer topic, final Buffer payload, final QoS qos, final boolean retain) {
   final Promise<Void> future = new Promise<Void>();
   next.getDispatchQueue()
       .execute(
           new Task() {
             public void run() {
               next.publish(topic, payload, qos, retain, future);
             }
           });
   return future;
 }
 public void suspend() {
   next.suspend();
 }
 public void resume() {
   next.resume();
 }