Another idea: What if instead of saving the loaded list to `expression.metricNames`, we just immediately return a reference to an empty list, which gets populated asynchronously via AJAX? Any references to this would also point to the updated version of the list, right?

And then, instead of `typeahead="m for m in expr.metricNames | filter:expr.expression"` you'd say, `typeahead="m for m in MetricNamesQuerier() | filter:expr.expression"` (is that a legal expression?)