pub fn new() -> (watch::Sender<Option<T>>, OptionalWatch<T>) {
        let (tx, rx) = watch::channel(None);
        (tx, OptionalWatch(rx))
    }
Create a new `OptionalWatch` with no initial value.

Keep in mind that when the sender is dropped, down stream
dependencies that are currently waiting will get a RecvError.
crates/turborepo-filewatch/src/optional_watch.rs