@Override public void stop(final SimpleCallback callback) { waitTillEmpty(); executor.shutdown( AsyncCommon.embed( callback, new Runnable() { @Override public void run() { cbExecutor.shutdown( AsyncCommon.embed( callback, new Runnable() { @Override public void run() { decorated.stop(callback); } })); } })); }