Browse Source

merge asCallback with asPromise

http2
Vsevolod Strukchinsky 10 years ago
parent
commit
0e3954b055
  1. 36
      index.js

36
index.js

@ -76,7 +76,8 @@ function requestAsEventEmitter(opts) {
return ee; return ee;
} }
function asCallback(opts, cb) { function asPromise(opts) {
return new Promise((resolve, reject) => {
const ee = requestAsEventEmitter(opts); const ee = requestAsEventEmitter(opts);
ee.on('request', req => { ee.on('request', req => {
@ -97,42 +98,37 @@ function asCallback(opts, cb) {
let err; let err;
const statusCode = res.statusCode; const statusCode = res.statusCode;
res.body = data;
if (statusCode < 200 || statusCode > 299) { if (statusCode < 200 || statusCode > 299) {
err = new got.HTTPError(statusCode, opts); err = new got.HTTPError(statusCode, opts);
} }
if (opts.json && statusCode !== 204) { if (opts.json && statusCode !== 204) {
try { try {
data = JSON.parse(data); res.body = JSON.parse(res.body);
} catch (e) { } catch (e) {
err = new got.ParseError(e, opts, data); err = new got.ParseError(e, opts, data);
} }
} }
cb(err, data, res);
})
.catch(err => cb(new got.ReadError(err, opts), null, res));
});
ee.on('error', cb);
}
function asPromise(opts) {
return new Promise((resolve, reject) =>
asCallback(opts, (err, data, response) => {
if (response) {
response.body = data;
}
if (err) { if (err) {
Object.defineProperty(err, 'response', {value: response}); Object.defineProperty(err, 'response', {value: res});
reject(err); reject(err);
return; return;
} }
resolve(response); resolve(res);
}) })
); .catch(err => {
err = new got.ReadError(err, opts);
Object.defineProperty(err, 'response', {value: res});
reject(err);
});
});
ee.on('error', reject);
});
} }
function asStream(opts) { function asStream(opts) {

Loading…
Cancel
Save