pub async fn new<F, Fut, T>(callback: F) -> Result<T>where F: FnOnce() -> Fut, Fut: Future<Output = Result<T>>,