else if (result == null && op.isCancelled())
throw new CancellationException();
else
return result;
} catch (java.util.concurrent.TimeoutException e) {
throw new TimeoutException(e);
} catch (InterruptedException e) {
return null;
} catch (ExecutionException e) {
Throwable ex = e.getCause();
if (ex instanceof TimeoutException)