pub fn internal_timeout<SLEEP, T>(
    dur: Duration,
    future: T
) -> impl Future<Output = Result<T::Output, (Duration, T)>>where
    SLEEP: Sleepble,
    T: Future + Unpin,