| 179 | }; |
| 180 | |
| 181 | function _makeRequest(options, callback) { |
| 182 | const request = http.request(options, function(response) { |
| 183 | // Continuously update stream with data |
| 184 | let body = ''; |
| 185 | const statusCode = response.statusCode; |
| 186 | response.on('data', function(d) { |
| 187 | body += d; |
| 188 | }); |
| 189 | response.on('end', function() { |
| 190 | if (statusCode >= 400) { |
| 191 | callback(body); |
| 192 | } else if (body === '') { |
| 193 | callback(null, {}); |
| 194 | } else { |
| 195 | callback(null, JSON.parse(body)); |
| 196 | } |
| 197 | }); |
| 198 | }); |
| 199 | request.on('error', function(err) { |
| 200 | helper.trace(err.message); |
| 201 | callback(err); |
| 202 | }); |
| 203 | return request; |
| 204 | } |
| 205 | |
| 206 | /** |
| 207 | * Shared base class for cluster, data center and node types. |