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))
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