support std::future + add ability to get() on a Task::future