pub async fn run<S, F, R>( registry: R, cache: ChatCache, chat_secret: Option<String>, ui_secret: String, web_ui_request_s: Sender<(Message, Sender<MessageReturn>)>, addr: S, shutdown: F, ) -> Result<(), Error>where S: Into<SocketAddr>, F: Future<Output = ()> + Send, R: Deref<Target = Registry> + Clone + Send + Sync + 'static,