if you define a `searching` variable where `focused`, `visible`, etc. are defined, this could just be `searching`, e.g.:

```javascript
clearTimeout(searching);
searching = ...
```

Also, I'm not sure we need this `delay` function.  I think it can just be:

```javascript
searching = setTimeout(render, options.timeout);
```

Finally, I do think checking to make sure the value has changed is useful but that might be better done inside `render`. What do you think?