c++ async blocking call