private boolean doAwait(long time, TimeUnit unit, long threadId) throws InterruptedException {
try {
long timeout = unit.toMillis(time);
Data key = lockProxy.getKeyData();
AwaitOperation op = new AwaitOperation(namespace, key, threadId, timeout, conditionId);
Future f = invoke(op);
return Boolean.TRUE.equals(f.get());
} catch (Throwable t) {
throw rethrowAllowInterrupted(t);
}