prax 0.1.1

a web penetration proxy hosted in neovim
Documentation
use nvim_rs::error::LoopError;
use tokio::task::JoinHandle;
use tokio_util::sync::CancellationToken;

pub fn runloop(join: JoinHandle<Result<(), Box<LoopError>>>, token: Option<CancellationToken>) {
    tokio::spawn(async move {
        match join.await {
            Ok(Ok(())) => {}
            Err(loop_err) => {
                log::error!("io loop error: {loop_err}");
            }

            Ok(Err(e)) => {
                if !e.is_channel_closed() {
                    log::error!("interaction error: {e}");
                }
            }
        }

        if let Some(token) = token {
            token.cancel()
        }
    });
}