The accepted answer is not wrong, but I wanted to pass along an alternative that satisfied a bit of a different need that I found.
My project in particular has an array of proxies to choose from, not just one. So each time I make a request, it doesn't make much sense to re-set the request.defaults object. Instead, you can just pass it through directly to the request options.
var reqOpts = {
url: reqUrl,
method: "GET",
headers: {"Cache-Control" : "no-cache"},
proxy: reqProxy.getProxy()};
reqProxy.getProxy()
returns a string to the equivalent of [protocol]://[username]:[pass]@[address]:[port]
Then make the request
request(reqOpts, function(err, response, body){
//handle your business here
});
Hope this helps someone who is coming along this with the same issue. Cheers.