try {
return f.get(timeRemaining, TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
if (l != null) {
// this perform the timeout logic on the Observable/Observer
l.tick();
}
}
} else {
// this means it should have already timed out so do so if it is not completed
if (!f.isDone()) {