I just realized if I add a sleep in the same function it is working as expected.
void Finalize( B list ) { if ( !futureCancelSell[0] || futureCancelSell[1].ready() ) { futureCancelSell[0] = true; futureCancelSell[1] = vibe.core.concurrency.async( &CheckPreviousSells, list); } sleep(300msecs); }
But that destroys the main point. Why I have to sleep in the same stack frame?