For example,
pub fn RwLockUpgradableReadGuardArc::upgrade(guard: Self) -> UpgradeArc<T>
implemented as
pub fn RwLockUpgradableReadGuardArc::upgrade(guard: Self, cancel: impl Future<Output=()>) -> UpgradeArc<T>
When cancel return Ready, just return UpgradeArc untouched.