};
synchronized (chain) {
executor.execute(o);
// the task will already be done if the executor uses the current thread
// but the chain lock status still needs to be re-set
chain.releaseAndAcquireChain();
}
try {
o.get();
} catch (InterruptedException e) {
throw new Fault(e);