pub(crate) type Promise<T> = Receiver<Result<T, Error>>;
struct Promise<T> { inner: Option<Arc<Inner<Result<T, Error>>, Global>>, }
inner: Option<Arc<Inner<Result<T, Error>>, Global>>