code: function listFilters() {
      var token = cache.get('token');
      var dfrd = Q.defer();
  
      function extractFilters(xml) {
        var r = _parse(xml, dfrd);
        if (r) {
          return r.response.filters[0].filter
            .map(function(filter) {
              return new Filter({
                name: filter._.trim(),
                type: filter.$.type,
                id: filter.$.sFilter,
                url: format('%s://%s/default.asp?pgx=LF&ixFilter=%s',
                  PROTOCOL, conf.host, filter.$.sFilter)
              });
            });
        }
      }
  
      if (!token) {
        dfrd.reject(MODULE_ERRORS.undefinedToken);
      } else {
        request(format(URLs.listFilters, PROTOCOL, conf.host, token),
          function(err, res, body) {
            var filters;
            if (err) {
              dfrd.reject(err);
            } else {
              filters = extractFilters(body);
              if (filters && filters.length) {
                dfrd.resolve(extractFilters(body));
              } else {
                dfrd.reject(MODULE_ERRORS.unknown);
              }
            }
          });
      }
      return dfrd.promise;
    }
docs: Retrieves a list of Filters as an array.  Each item in the array is of
  type Filter.  Example:
  ```
  [{"name": "My Cases", "type": "builtin", "id": "ez",
  "url": "https://zzz.fogbugz.com/default.asp?pgx=LF&ixFilter=ez"}),
  {"name": "Inbox", "type": "builtin", "id": "inbox",
  "url": "https://zzz.fogbugz.com/default.asp?pgx=LF&ixFilter=inbox"}]
  ```
  @method listFilters
  @see class fogbugz.Filter
  @returns {Function|promise|Q.promise} Promise