code: public AsyncGroup callbackSync(def<Void> func) {
                  inProcess = true;
                  try {
                          Object[] awaits = new Object[group.length];
                          int i = 0;
                          for (Async<?> async : group) {
                                  awaits[i] = async.await();
                                  ++i;
                          }
                          func.apply(awaits);
                  } catch (Throwable e) {
                          synchronized (lock) {
                                  err = Style.$(e);
                                  if (handler != null) {
                                          handler.apply(err);
                                  }
                          }
                  }
                  return this;
          }
docs: The given lambda will be invoked on current thread when all async
  operations are finished or thrown with an exception.<br>
  Arguments would be filled with result of the Asyncs in the order of
  async operations were added.
  
  @param func function to call when all async operations are
  finished.
  @return <code>this</code>.