sendRequest(sUrl, sMethod, mPropertyBag) {
			if (
				!mPropertyBag.initialConnector
				|| (
					!mPropertyBag.initialConnector.xsrfToken
					&& !(sMethod === "GET") // For GET and HEAD operations, there is no need to fetch a token
					&& !(sMethod === "HEAD")
				)
			) {
				return updateTokenInConnectorAndSendRequest(mPropertyBag, sUrl, sMethod);
			}

			return Utils.sendRequest(sUrl, sMethod, mPropertyBag).then(function(oResult) {
				return oResult;
			})
			.catch(function(oFirstError) {
				if (oFirstError.status === 403) {
					// token is invalid, get a new token and retry
					return updateTokenInConnectorAndSendRequest(mPropertyBag, sUrl, sMethod);
				}
				throw oFirstError;
			});
		}
Sending a xhr request with provided X-CSRF token;
If the token has been expired, fetch a new token and resend the request.

@param {string} sUrl Url of the request
@param {string} sMethod Desired action to be performed for a given resource
@param {object} mPropertyBag Object with parameters as properties
@param {object} mPropertyBag.initialConnector Corresponding initial connector which stores an existing X-CSRF token
@param {string} mPropertyBag.tokenUrl The url to be called when new token fetching is necessary
@param {string} [mPropertyBag.flexObjects] Payload of the request
@param {string} [mPropertyBag.contentType] Content type of the request
@param {string} [mPropertyBag.dataType] Expected data type of the response
@returns {Promise<object>} Promise resolving with the JSON parsed response of the request