async fn run_connection<S>(
socket: &mut ClientSocket<S>,
state: &Arc<TransportState>,
watching: &mut Watching,
holds: &mut Holds<'_>,
updates: &mut Option<(UnboundedReceiver<SeatUpdate>, bool)>,
dictate: &mut Streaming,
viewers: &mut Viewers,
lanes: AnswerLanes<'_>,
settings_push: SettingsPush,
caller: Caller,
) -> Result<()>