I'm aware of this answer and the following code is based on it. It is working but I'm not happy with something.
What if I want to make some conditional checking and resolve based on it? I've commented on code where I'd like to change.
/**
 * Returns not yet propagate subdomains.
 * @return Promise
 */
Tour.prototype.getOffline = function() {
  var self = this;
  var resolve_, reject_;
  // to be fulfilled later
  var promise = new Promise(function(resolve, reject){
    resolve_ = resolve;
    reject_ = reject;
  });
  var check = function(key) {
    return new Promise(function(resolve, reject) {
      redis_client.hmget(key, 'online', function(err, reply) {
        if (reply[0] === 'n') {
          resolve(key); // <----- I'd like to resolve only here
        } else {
          // reject(); // <---- I can't reject cause of Promise.all
          resolve(); // <----- An empty value to satisfy Promise.all
        }
      });
    });
  };
  this.getKeysRedis('subdomain:*').then(function(resp) {
    var promises = resp.map(check);
    var results = Promise.all(promises);
    results.then(function(data) {
      // I have undefined values on data array
      var array = data.filter(function(key){
        return utils.isDefAndNotNull(key);
      });
      resolve_(array); // <------ How can I resolve without filtering
    });
  }, function(error) {
    reject_(error);
  });
  return promise;
};
Final code, removed Promise constructor antipattern as @Bergi alerted:
Tour.prototype.getOffline = function() {
  var self = this;
  var check = function(key) {
    return new Promise(function(resolve, reject) {
      redis_client.hmget(key, 'online', function(err, reply) {
        if (reply[0] === 'n') resolve(key);
        else reject();
      });
    });
  };
  var reflect = function(promise) {
    return promise.then(
      x => ({state: 'resolved', value: x}),
      e => ({state: 'rejected' , value: e})
    );
  };
  return new Promise(function(resolve, reject) {
    self.getKeysRedis(self.subdomain_keyname + '*')
    .then(function(keys) {
      return Promise.all(keys.map(check).map(reflect)).then(function(r) {
        return r.filter(x => x.state === 'resolved');
      });
    })
    .then(function(results) {
      var array = results.map((result) => result.value);
      resolve(array);
    })
    .catch((err) => reject(err));
  });
};
 
     
    