code: function Request__chain(promise, next) {
  
          if (!promise) {
              return new Promise(function (resolve, reject) {
                  try {
                      resolve(next.apply(next, arguments));
                  } catch (e) {
                      reject(new error.HttpError(500, {}, "Error on executing action", e));
                  }
              });
          }
  
          return promise.then(function (data) {
              if (!!this.isPromiseChainStopped) {
                  return promise;
              }
              return _handler(data);
          }.bind(this), this._handleError.bind(this));
  
          function _handler() {
              try {
                  return next.apply(next, arguments);
              } catch (e) {
                  throw new error.HttpError(500, {}, "Error on executing action", e);
              }
          }
      }
docs: @since 0.0.1
  @author Igor Ivanovic
  @method Request#_chain
  
  @description
  Chain promises