docs: function request(rtype, rmethod) {
  			var _this = this;
  
  			var _ref2 = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
  
  			var params = _ref2.params;
  			var api = _ref2.api;
  			var post = _ref2.post;
  			var callback = arguments.length <= 3 || arguments[3] === undefined ? Function.prototype : arguments[3];
  
  			assert(rtype && rmethod, 'rtype and rmethod must be String and cannot be null');
  			//console.log('request: ' + rtype + ' ' + rmethod);
  			var appkey = this.appkey;
  			var secretkey = this.secretkey;
  			var userkey = this.userkey;
  			var output = this.output;
  			var format = this.format;
  			var timeout = this.timeout;
  			var useragent = this.useragent;
  			var ssl = this.ssl;
  
  			var _params = !_(params).isEmpty() ? params.join('/') + '/' : ''; // zmiana tablicy z parametrami metody w string
  			var _api = Wykop.parseApi({ appkey: appkey, userkey: userkey, output: output, format: format }, api); // zmiana obiektu z parametrami api w string
  
  			var _Wykop$parsePostParams = Wykop.parsePostParams(post);
  
  			var form = _Wykop$parsePostParams.form;
  			var formData = _Wykop$parsePostParams.formData;
  			var sortedPost = _Wykop$parsePostParams.sortedPost;
  			// parsowanie parametrów POST
  
  			// tworzymy url zapytania
  			var protocol = ssl?'https':'http';
  			var url = protocol+'://a.wykop.pl/' + rtype + '/' + rmethod + '/' + _params + _api;
  			var method = !_(post).isEmpty() ? 'POST' : 'GET';
  			var apisign = md5(secretkey + url + sortedPost);
  
  			var options = {
  				url: url,
  				method: method,
  				json: true,
  				timeout: +timeout,
  				headers: {
  					'User-Agent': useragent,
  					'apisign': apisign
  				},
  				form: form,
  				formData: formData
  			};
  
  			/*
     * Wykonujemy request, metoda request zwraca promise
     */
  			return new _Promise(function (resolve, reject) {
  				doRequest(options, function (error, response, body) {
  					if (error) {
  						callback(error);
  						reject(error);
  					} else if (!(response.statusCode >= 200 && response.statusCode < 300)) {
  						callback(response);
  						reject(response);
  					} else if (body.error) {
  						var code = body.error.code;
  						if ((code === 11 || code === 12 || code === 13) && _this.autologin && _this._errLoginCount < _this.retryCount) {
  							_this._errLoginCount++;
  							_this.login(undefined, function (err, res) {
  								_this.request(rtype, rmethod, { params: params, api: api, post: post }, callback).then(function (res) {
  									resolve(res);
  								})['catch'](function (err) {
  									reject(err);
  								});
  							});
  						} else {
  							callback(body);
  							reject(body);
  						}
  					} else {
  						callback(null, body);
  						resolve(body);
  					}
  				});
  			});
  		}