pub async fn capture_oauth_callback( port: u16, expected_state: String, exchange_fn: Box<dyn FnOnce(String) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send>> + Send>, timeout: Duration, ) -> Result<()>