code: func (s *session) maybeSendRetransmission() (bool, error) {
  	retransmitPacket := s.sentPacketHandler.DequeuePacketForRetransmission()
  	if retransmitPacket == nil {
  		return false, nil
  	}
  
  	s.logger.Debugf("Dequeueing retransmission for packet 0x%x (%s)", retransmitPacket.PacketNumber, retransmitPacket.EncryptionLevel)
  	packets, err := s.packer.PackRetransmission(retransmitPacket)
  	if err != nil {
  		return false, err
  	}
  	ackhandlerPackets := make([]*ackhandler.Packet, len(packets))
  	for i, packet := range packets {
  		ackhandlerPackets[i] = packet.ToAckHandlerPacket()
  	}
  	s.sentPacketHandler.SentPacketsAsRetransmission(ackhandlerPackets, retransmitPacket.PacketNumber)
  	for _, packet := range packets {
  		if err := s.sendPackedPacket(packet); err != nil {
  			return false, err
  		}
  	}
  	return true, nil
  }
docs: // maybeSendRetransmission sends retransmissions for at most one packet.
  // It takes care that Initials aren't retransmitted, if a packet from the server was already received.