ProgressResult<R> () { Future<ProgressResult<R>> future = sync().submit(); try { return future.get(); } catch (Throwable e) { throw new AssertionError("submit() handles exceptions and always returns successful future"); } }