From 0e3954b05546f33920f286f1c22ba9cfdbda08e6 Mon Sep 17 00:00:00 2001 From: Vsevolod Strukchinsky Date: Wed, 2 Dec 2015 17:59:35 +0500 Subject: [PATCH] merge asCallback with asPromise --- index.js | 88 +++++++++++++++++++++++++++----------------------------- 1 file changed, 42 insertions(+), 46 deletions(-) diff --git a/index.js b/index.js index 8318bd6..be56439 100644 --- a/index.js +++ b/index.js @@ -76,63 +76,59 @@ function requestAsEventEmitter(opts) { return ee; } -function asCallback(opts, cb) { - const ee = requestAsEventEmitter(opts); +function asPromise(opts) { + return new Promise((resolve, reject) => { + const ee = requestAsEventEmitter(opts); - ee.on('request', req => { - if (isStream(opts.body)) { - opts.body.pipe(req); - opts.body = undefined; - return; - } + ee.on('request', req => { + if (isStream(opts.body)) { + opts.body.pipe(req); + opts.body = undefined; + return; + } - req.end(opts.body); - }); + req.end(opts.body); + }); - ee.on('response', res => { - const stream = opts.encoding === null ? getStream.buffer(res) : getStream(res, opts); + ee.on('response', res => { + const stream = opts.encoding === null ? getStream.buffer(res) : getStream(res, opts); - stream - .then(data => { - let err; - const statusCode = res.statusCode; + stream + .then(data => { + let err; + const statusCode = res.statusCode; - if (statusCode < 200 || statusCode > 299) { - err = new got.HTTPError(statusCode, opts); - } + res.body = data; - if (opts.json && statusCode !== 204) { - try { - data = JSON.parse(data); - } catch (e) { - err = new got.ParseError(e, opts, data); + if (statusCode < 200 || statusCode > 299) { + err = new got.HTTPError(statusCode, opts); } - } - - cb(err, data, res); - }) - .catch(err => cb(new got.ReadError(err, opts), null, res)); - }); - ee.on('error', cb); -} + if (opts.json && statusCode !== 204) { + try { + res.body = JSON.parse(res.body); + } catch (e) { + err = new got.ParseError(e, opts, data); + } + } -function asPromise(opts) { - return new Promise((resolve, reject) => - asCallback(opts, (err, data, response) => { - if (response) { - response.body = data; - } + if (err) { + Object.defineProperty(err, 'response', {value: res}); + reject(err); + return; + } - if (err) { - Object.defineProperty(err, 'response', {value: response}); - reject(err); - return; - } + resolve(res); + }) + .catch(err => { + err = new got.ReadError(err, opts); + Object.defineProperty(err, 'response', {value: res}); + reject(err); + }); + }); - resolve(response); - }) - ); + ee.on('error', reject); + }); } function asStream(opts) {