code: def _select_binary_stream(self, name, urls):
      
      downloaded_successfully = False
      accumulated_errors = []
      for url in OrderedSet(urls):  # De-dup URLS: we only want to try each URL once.
        logger.info('Attempting to fetch {name} binary from: {url} ...'.format(name=name, url=url))
        try:
          with temporary_file() as dest:
            logger.debug("in BinaryToolFetcher: url={}, timeout_secs={}"
                         .format(url, self._timeout_secs))
            self._fetcher.download(url,
                                   listener=Fetcher.ProgressListener(),
                                   path_or_fd=dest,
                                   timeout_secs=self._timeout_secs)
            logger.info('Fetched {name} binary from: {url} .'.format(name=name, url=url))
            downloaded_successfully = True
            dest.seek(0)
            yield dest
            break
        except (IOError, Fetcher.Error, ValueError) as e:
          accumulated_errors.append('Failed to fetch binary from {url}: {error}'
                                    .format(url=url, error=e))
      if not downloaded_successfully:
        raise self.BinaryNotFound(name, accumulated_errors)
docs: Download a file from a list of urls, yielding a stream after downloading the file.
  
      URLs are tried in order until they succeed.
  
      :raises: :class:`BinaryToolFetcher.BinaryNotFound` if requests to all the given urls fail.