code: async def try_sending(self,msg,timeout_secs, max_attempts):
          if timeout_secs is None:
              timeout_secs = self.timeout
          if max_attempts is None:
              max_attempts = self.retry_count
          attempts = 0
          while attempts < max_attempts:
              if msg.seq_num not in self.message: return
              event = aio.Event()
              self.message[msg.seq_num][1]= event
              attempts += 1
              if self.transport:
                  self.transport.sendto(msg.packed_message)
              try:
                  myresult = await aio.wait_for(event.wait(),timeout_secs)
                  break
              except Exception as inst:
                  if attempts >= max_attempts:
                      if msg.seq_num in self.message:
                          callb = self.message[msg.seq_num][2]
                          if callb:
                              callb(self, None)
                          del(self.message[msg.seq_num])
                      self.unregister()