def join(target, options = {})
      block_until_resumed
      async = (target.is_a?(Hash) ? target : options).delete :async
      join = call.join target, options
      waiter = async ? join[:joined_condition] : join[:unjoined_condition]
      waiter.wait
    end
def join(target, options = {})
      block_until_resumed
      async = (target.is_a?(Hash) ? target : options).delete :async
      join = call.join target, options
      waiter = async ? join[:joined_condition] : join[:unjoined_condition]
      waiter.wait
    end
Join the call to another call or a mixer, and block until the call is unjoined (by hangup or otherwise).

 @param [Object] target See Call#join for details
 @param [Hash] options
 @option options [Boolean] :async Return immediately, without waiting for the calls to unjoin. Defaults to false.

 @see Call#join