Backends that simply poll for changes and wait some time between checks can just implement a `loop()` method and, optionally, `__enter__` and `__exit__` methods, so they can perform initialization/cleanup logic within a context manager.