std::packaged_task<void> has problems in VC++ so now we initiate the
promise and future ourselves.