And if it's just a single Future, I think this means you can get away with using Future.get(timeout), which would simplify a lot of this.