code: async def server_reflexive_candidate(protocol, stun_server):
      
      # lookup address
      loop = asyncio.get_event_loop()
      stun_server = (
          await loop.run_in_executor(None, socket.gethostbyname, stun_server[0]),
          stun_server[1])
  
      # perform STUN query
      request = stun.Message(message_method=stun.Method.BINDING,
                             message_class=stun.Class.REQUEST)
      response, _ = await protocol.request(request, stun_server)
  
      local_candidate = protocol.local_candidate
      return Candidate(
          foundation=candidate_foundation('srflx', 'udp', local_candidate.host),
          component=local_candidate.component,
          transport=local_candidate.transport,
          priority=candidate_priority(local_candidate.component, 'srflx'),
          host=response.attributes['XOR-MAPPED-ADDRESS'][0],
          port=response.attributes['XOR-MAPPED-ADDRESS'][1],
          type='srflx',
          related_address=local_candidate.host,
          related_port=local_candidate.port)
docs: Query STUN server to obtain a server-reflexive candidate.