docs: async def _transmit(self):
          """
          Transmit outbound data.
          """
          # send FORWARD TSN
          if self._forward_tsn_chunk is not None:
              await self._send_chunk(self._forward_tsn_chunk)
              self._forward_tsn_chunk = None
  
              # ensure T3 is running
              if not self._t3_handle:
                  self._t3_start()
  
          # limit burst size
          if self._fast_recovery_exit is not None:
              burst_size = 2 * USERDATA_MAX_LENGTH
          else:
              burst_size = 4 * USERDATA_MAX_LENGTH
          cwnd = min(self._flight_size + burst_size, self._cwnd)
  
          # retransmit
          retransmit_earliest = True
          for chunk in self._sent_queue:
              if chunk._retransmit:
                  if self._fast_recovery_transmit:
                      self._fast_recovery_transmit = False
                  elif self._flight_size >= cwnd:
                      return
                  self._flight_size_increase(chunk)
  
                  chunk._misses = 0
                  chunk._retransmit = False
                  chunk._sent_count += 1
                  await self._send_chunk(chunk)
                  if retransmit_earliest:
                      # restart the T3 timer as the earliest outstanding TSN
                      # is being retransmitted
                      self._t3_restart()
              retransmit_earliest = False
  
          while self._outbound_queue and self._flight_size < cwnd:
              chunk = self._outbound_queue.popleft()
              self._sent_queue.append(chunk)
              self._flight_size_increase(chunk)
  
              # update counters
              chunk._sent_count += 1
              chunk._sent_time = time.time()
  
              await self._send_chunk(chunk)
              if not self._t3_handle:
                  self._t3_start()