/// This is semantically equivalent to via(executor).then(func), but
/// easier to read and slightly more efficient.
template <class Func>
-auto via(Executor*, Func func)
+auto via(Executor*, Func&& func)
-> Future<typename isFuture<decltype(func())>::Inner>;
/** When all the input Futures complete, the returned Future will complete.