docs: def _load_first(self, target_uris, load_method, **kwargs):
          """Load first yamldict target found in uri list.
  
          :param target_uris: Uris to try and open
          :param load_method: load callback
          :type target_uri: list or string
          :type load_method: callback
  
          :returns: yamldict
  
          """
          if isinstance(target_uris, string_types):
              target_uris = [target_uris]
  
          # TODO: Move the list logic into the extension, otherwise a
          # load will always try all missing files first.
          # TODO: How would multiple protocols work, should the registry hold
          # persist copies?
          for target_uri in target_uris:
              target = urlsplit(target_uri, scheme=self.default_protocol)
  
              extension = self.get_extension(target.scheme)
              query = extension.conform_query(target.query)
              try:
                  yaml_dict = extension.load_target(
                      target.scheme,
                      target.path,
                      target.fragment,
                      target.username,
                      target.password,
                      target.hostname,
                      target.port,
                      query,
                      load_method,
                      **kwargs
                  )
                  return yaml_dict
              except extension.not_found_exception:
                  pass
  
          raise IOError("unable to load: {0}".format(target_uris))