pub async fn timeout<F, T, E>( duration: Duration, future: F, task: String, ) -> CoreResult<T>where E: Into<CoreError>, F: Future<Output = Result<T, E>>,