Apologies, I didn't notice this before - [response](http://twistedmatrix.com/documents/current/api/twisted.web.client.Response.html) doesn't have a content.  It's because the response represents the first bits of the response, including the status code, headers, etc., but the body might be really big, so twisted delivers it in chunks, which involves a protocol, but treq [nicely does it for you](http://treq.readthedocs.org/en/latest/api.html#accessing-content).  :)

So probably `handle_request` is not needed - we probably want to check that the status code is what we expect (see `otter.utils.http` - there's a `check_success` method that will raise if not the expected status code), although that can be done in a different PR I guess, and then return the content?  So probably just `.addCallback(check_success).addCallback(treq.content)`, since we're just returning the output of elasticsearch here.

If we wanted to munge the data at some point it'd probably be `treq.json_content`.