Header with facilities that allow asynchronous access to values set by specific providers, possibly in a different thread.
Each of these providers (which are either promise or packaged_task objects, or calls to async) share access to a shared state with a future object: the point where the provider makes the shared state ready is synchronized with the point the future object accesses the shared state.