pub async fn serve( engine: Engine, config: ServerConfig, shutdown: impl Future<Output = ()> + Send + 'static, ) -> Result<()>