fn lock_and_then<T, U, E, F>(
    lock: &BiLock<T>,
    cx: &mut Context<'_>,
    f: F
) -> Poll<Result<U, E>>where
    F: FnOnce(Pin<&mut T>, &mut Context<'_>) -> Poll<Result<U, E>>,