the sender is necessarily blocked from sending or receiving other messages. Nonblocking yet synchronous behavior is allowed in order to account for the possibility that the sender may have multiple parts or threads, and the waiting may block only one.