@Override
    public Object invoke(final Object proxy, final Method method, final Object[] args)
        throws Throwable {
      async.execute(() -> {
        try {
          if (method.getName().equals(methodName)) {
            delay.await();
          }
          method.invoke(executor, args);
        } catch (InterruptedException e) {
          Thread.currentThread().interrupt();
        } catch (Exception e) {
          throw new Error(e);
        }
      });
      return null;
    }
Proxy handler which invokes methodName asynchronously AND delays the invocation to the
underlying methodName until after CountDownLatch is opened.
geode-core/src/test/java/org/apache/geode/internal/util/AbortableTaskServiceJUnitTest.java