Skip to content

Commit

Permalink
Promisify properly.
Browse files Browse the repository at this point in the history
  • Loading branch information
papandreou committed Mar 17, 2017
1 parent 4f837a3 commit 4fd9020
Showing 1 changed file with 29 additions and 57 deletions.
86 changes: 29 additions & 57 deletions lib/unexpectedHttp.js
Expand Up @@ -26,35 +26,6 @@ module.exports = {
}

return expect.promise(function (resolve, reject) {
var callbackCalled = false;
function handleError(err) {
if (!callbackCalled) {
callbackCalled = true;
if (expectedResponseError) {
try {
expect(err, 'to equal', expectedResponseError);
} catch (e) {
return reject(e);
}
resolve(context);
} else if (err.code) {
// Socket or DNS error
try {
expect.fail({
diff: function (output) {
output.error(err.message);
return { diff: output };
},
code: err.code
});
} catch (e) {
reject(e);
}
} else {
reject(err);
}
}
}
var requestOptions = {};
var requestTimeout = subject.timeout || 0;
var requestBody = subject.body;
Expand Down Expand Up @@ -119,23 +90,17 @@ module.exports = {
that.errorMode = 'nested';
try {
expect.fail('expected a response within {0} ms', requestTimeout);
} catch (e) {
return handleError(e);
} catch (err) {
reject(err);
}
}, requestTimeout);
}

var request = (httpRequest.encrypted ? https : http).request(requestOptions).on('response', function (response) {
if (callbackCalled) {
return;
}
var chunks = [];
response.on('data', function (chunk) {
chunks.push(chunk);
}).on('end', function () {
if (callbackCalled) {
return;
}
if (timeout) {
clearTimeout(timeout);
}
Expand Down Expand Up @@ -173,25 +138,12 @@ module.exports = {
headers: response.headers,
unchunkedBody: body
});
expect.promise(function () {
expect(expectedResponseError, 'to be undefined');
return expect(context.httpExchange = new messy.HttpExchange({
request: httpRequest,
response: httpResponse
}), 'to satisfy', {response: value});
}).caught(function (e) {
if (!callbackCalled) {
callbackCalled = true;
return reject(e);
}
}).then(function () {
if (!callbackCalled) {
callbackCalled = true;
resolve(context);
}
});
}).on('error', handleError);
}).on('error', handleError);
resolve(context.httpExchange = new messy.HttpExchange({
request: httpRequest,
response: httpResponse
}));
}).on('error', reject);
}).on('error', reject);

if (request.xhr) {
// In browserify: Make sure the response comes back as a Uint8Array
Expand All @@ -200,10 +152,30 @@ module.exports = {

if (requestBodyIsStream) {
requestBody.pipe(request);
requestBody.on('error', handleError);
requestBody.on('error', reject);
} else {
request.end(httpRequest.unchunkedBody);
}
}).then(function (httpExchange) {
expect(expectedResponseError, 'to be undefined');
return expect(httpExchange, 'to satisfy', { response: value });
}, function (err) {
if (expectedResponseError) {
expect(err, 'to equal', expectedResponseError);
} else if (err.code) {
// Socket or DNS error
expect.fail({
diff: function (output) {
output.error(err.message);
return { diff: output };
},
code: err.code
});
} else {
throw err;
}
}).then(function () {
return context;
});
});
}
Expand Down

0 comments on commit 4fd9020

Please sign in to comment.