function getLoader(progress, url) {
  var container = document.getElementById('container');
  return function (result) {
    if (result.error) {
      if (progress) {
        document.getElementById('error').innerHTML += url.escapeHTML() + ': ' + result.error.code + ' ' + result.error.message + '<br />';
      }
      draw();
    } else if (result.url == null) {
      if (progress) {
        document.getElementById('error').innerHTML += url.escapeHTML() + ': result.url is null<br />';
      }
      draw();
    } else {
      loaded[url] = result.before || result.url; // result.before exists for postToFeeds
      if (!loaded[result.url]) {
        if (progress) {
          container.innerHTML = 'Loading ' + result.url.escapeHTML() + '...<br />' + container.innerHTML;
        }
        loaded[result.url] = true;
        loadFeed(url, result.url, progress);
      } else {
        draw();
      }
    }
  };
}
