docs: def query(self, xri, service_types):
          """Resolve some services for an XRI.
  
          Note: I don't implement any service endpoint selection beyond what
          the resolver I'm querying does, so the Services I return may well
          include Services that were not of the types you asked for.
  
          May raise fetchers.HTTPFetchingError or L{etxrd.XRDSError} if
          the fetching or parsing don't go so well.
  
          @param xri: An XRI to resolve.
          @type xri: unicode
  
          @param service_types: A list of services types to query for.  Service
              types are URIs.
          @type service_types: list of str
  
          @returns: tuple of (CanonicalID, Service elements)
          @returntype: (unicode, list of C{ElementTree.Element}s)
          """
          # FIXME: No test coverage!
          services = []
          # Make a seperate request to the proxy resolver for each service
          # type, as, if it is following Refs, it could return a different
          # XRDS for each.
  
          canonicalID = None
  
          for service_type in service_types:
              url = self.queryURL(xri, service_type)
              response = fetchers.fetch(url)
              if response.status not in (200, 206):
                  # XXX: sucks to fail silently.
                  # print "response not OK:", response
                  continue
              et = etxrd.parseXRDS(response.body)
              canonicalID = etxrd.getCanonicalID(xri, et)
              some_services = list(iterServices(et))
              services.extend(some_services)
          # TODO:
          #  * If we do get hits for multiple service_types, we're almost
          #    certainly going to have duplicated service entries and
          #    broken priority ordering.
          return canonicalID, services