|  | 
        In this library, asynchronous socket operations are
        those member functions having prefix async_.
      
        For an object s, a program
        may initiate asynchronous socket operations such that there are multiple
        simultaneously outstanding asynchronous operations.
      
        When there are multiple outstanding asynchronous read
        operations on s:
      
        — having no argument flags
        of type socket_base::message_flags, or
      
        — having an argument flags
        of type socket_base::message_flags but where (flags & socket_base::message_out_of_band)
        == 0
      
        then the buffers are filled
        in the order in which these operations were issued. The order of invocation
        of the completion handlers for these operations is unspecified.
      
        When there are multiple outstanding asynchronous read
        operations on s having
        an argument flags of type
        socket_base::message_flags where (flags & socket_base::message_out_of_band)
        != 0
        then the buffers are filled
        in the order in which these operations were issued.
      
        When there are multiple outstanding asynchronous write
        operations on s, the
        buffers are transmitted in
        the order in which these operations were issued. The order of invocation
        of the completion handlers for these operations is unspecified.