pub async fn subscribe_v2<E, F, EF, T>(
    subcription_url: &str,
    f: F,
    on_error: EF
) -> Result<(), Box<dyn Error + Send + Sync>>
where F: Fn(E) -> T + Copy + Send + Sync + 'static, EF: Fn(Box<dyn Error + Send + Sync>) + Copy + Send + Sync + 'static, T: Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send, E: Event + Send + Sync + Clone + Debug + 'static,