The good news is that...

```js
if (!navigator.mozContacts || !terms.length) {
  setTimeout(function() {
    callback([]);
  });
  return;
}
```

can be changed to:

```js
if (!navigator.mozContacts || !terms.length) {
  setTimeout(function() {
    callback(null);
  });
  return;
}
```

Because the semantics of missing terms (when missing `filter.filterValue` is an error)