function request(sMethod, sUrl, mRequestHeaders, sRequestBody) {
		return new Promise(function (resolve) {
			var oXHR = new XMLHttpRequest();

			oXHR.open(sMethod, sUrl);
			oXHR.setRequestHeader("Accept-Foo", "bar");
			oXHR.setRequestHeader("X-CSRF-Token", "Refresh");
			Object.keys(mRequestHeaders || {}).forEach(function (sHeader) {
				oXHR.setRequestHeader(sHeader, mRequestHeaders[sHeader]);
			});
			oXHR.addEventListener("load", function () {
				resolve(oXHR);
			});
			oXHR.send(sRequestBody);
		});
	}
Runs a request and returns a promise on the finished XMLHttpRequest object.

@param {string} sMethod The request method
@param {string} sUrl The request URL
@param {map} [mRequestHeaders] The request headers
@param {string} [sRequestBody=""] The request body
@returns {Promise} A promise that is resolved with the XMLHttpRequest object when the
  response has arrived