async fn publish_loop(
ws: WebSocketStream<MaybeTlsStream<TcpStream>>,
kind: PayloadKind,
clock: Arc<SeqClock>,
ack_samples: Arc<Mutex<Vec<u64>>>,
errors: Arc<AtomicU64>,
next_seq: Arc<AtomicU64>,
sent: Arc<AtomicU64>,
deadline: Instant,
payload_bytes: usize,
rate: u64,
ack_latency: bool,
warmup_ns: u64,
)