Non-blocking Future/Promise construct for C++