code: function Request__compress(response) {
          var accept = this.getRequestHeader('Accept-Encoding'),
              isForCompress = (Type.isString(response) || response instanceof Buffer) && !this.isCompressed,
              that = this;
  
          if (this.isRendered) {
              // we have multiple recursion in parse for catching
              return false;
          }
  
  
          if (isForCompress && !!this.isCompressionEnabled && Type.isString(accept)) {
              if (!this.hasHeader('Vary')) {
                  this.addHeader('Vary', 'Accept-Encoding');
              }
              if (accept.indexOf('gzip') > -1) {
                  return new Promise(function (resolve, reject) {
                      zlib.gzip(response, function (err, data) {
                          if (err) {
                              return reject(err);
                          }
                          that.isCompressed = true;
                          that.addHeader('Content-Encoding', 'gzip');
                          resolve(data);
                      });
                  });
              } else if (accept.indexOf('deflate') > -1) {
                  return new Promise(function (resolve, reject) {
                      zlib.deflate(response, function (err, data) {
                          if (err) {
                              return reject(err);
                          }
                          that.isCompressed = true;
                          that.addHeader('Content-Encoding', 'deflate');
                          resolve(data);
                      });
                  });
              }
          }
  
          return response;
      }
docs: @since 0.0.1
  @author Igor Ivanovic
  @method Request#_compress
  
  @description
  Compress output
  @return object