var q = require('q'), request = require('request'), url = require('url'), _ = require('underscore'); module.exports = function(url, options) { var dfd_body = q.defer(); var dfd_response = q.defer(); dfd_body.promise.response = dfd_response.promise; options = options ? _.clone(options) : {}; options.uri = url || options.uri; request(options,function(err,res,body){ if ( err ) { dfd_response.reject(err); } else { dfd_response.resolve(res); if ( res.statusCode >= 200 && res.statusCode < 300 ) { dfd_body.resolve(body); } else { dfd_body.reject(body); } } }); return dfd_body.promise; };