pub async fn lock<T: AsyncConnectionLike>( conn: &mut T, lock_key: &str, duration: Duration, retry_interval: Duration, retry_timeout: Option<Duration>, ) -> Result<String>