-type watch() :: #{atom() => reference()}.
-spec down(reference(), watch()) -> {down, atom(), watch()} | ignore.
-spec retry(atom(), watch()) -> watch().
-spec start([atom()]) -> watch().