Created by
Stewart Webb
| ClientRequest.prototype._onFinish = function() {
var self = this;
if (!self._destroyed) {
var body, opts = self._opts, headersObj = self._headers;
if (("POST" === opts.method || "PUT" === opts.method) && (body = capability.blobConstructor ? new global.Blob(self._body.map(function(buffer) {
return buffer.toArrayBuffer()
}), {
type: (headersObj["content-type"] || {}).value || ""
}) : Buffer.concat(self._body).toString()), "fetch" === self._mode) {
var headers = keys(headersObj).map(function(name) {
return [headersObj[name].name, headersObj[name].value]
});
global.fetch(self._opts.url, {
method: self._opts.method,
headers: headers,
body: body,
mode: "cors",
credentials: opts.withCredentials ? "include": "same-origin"
}).then(function(response) {
self._fetchResponse = response, self._connect()
}).then(void 0, function(reason) {
self.emit("error", reason)
})
} else {
var xhr = self._xhr = new global.XMLHttpRequest;
try {
xhr.open(self._opts.method, self._opts.url, !0)
} catch (err) {
return void process.nextTick(function() {
self.emit("error", err)
})
}
"responseType"in xhr && (xhr.responseType = self._mode.split(":")[0]), "withCredentials"in xhr && (xhr.withCredentials=!!opts.withCredentials), "text" === self._mode && "overrideMimeType"in xhr && xhr.overrideMimeType("text/plain; charset=x-user-defined"), foreach(keys(headersObj), function(name) {
xhr.setRequestHeader(headersObj[name].name, headersObj[name].value)
}), self._response = null, xhr.onreadystatechange = function() {
switch (xhr.readyState) {
case rStates.LOADING:
case rStates.DONE:
self._onXHRProgress()
}
}, "moz-chunked-arraybuffer" === self._mode && (xhr.onprogress = function() {
self._onXHRProgress()
}), xhr.onerror = function() {
self._destroyed || self.emit("error", new Error("XHR error"))
};
try {
xhr.send(body)
} catch (err) {
return void process.nextTick(function() {
self.emit("error", err)
})
}
}
}
}
|