#[macro_export]
macro_rules! get_or_init_async {
($cache:expr, $key:expr, $init:expr) => {{
let key = $key;
match $cache.get(key) {
Some(v) => Ok(v),
None => {
let val = $init().await?;
$cache.insert(key.to_owned(), val);
Ok($cache.get(key).unwrap())
}
}
}};
}