An initiating function shall not block (C++ 2014 [defns.block]) the calling thread pending completion of the outstanding operation.
[ Note: Initiating functions can still block the calling thread for other reasons. For example, if an initiating function locks a mutex in order to synchronize access to shared data. — end note ]