'Returns a new service which will process requests with the
specified filter.  Filtering operations can include logging, automatic
retrying, etc...  The filter is a lambda which receives the HTTPRequest
and another lambda.  The filter can perform any pre-processing on the
request, pass it off to the next lambda, and then perform any
post-processing on the response.'

def with_filter(self, filter):

    res = type(self)(self.subscription_id, self.cert_file, self.host, self.request_session, self._httpclient.timeout)
    old_filter = self._filter
    def new_filter(request):
        return filter(request, old_filter)
    res._filter = new_filter
    return res
