<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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))