if (!tryAcquireSharedNanos(0, nanosTimeout))
throw new TimeoutException();
if (getState() == CANCELLED)
throw new CancellationException();
if (getState() == SKIPPED) {
throw new SkippedException();
}
if (exception != null)
throw new ExecutionException(exception);
return result;
}