diff --git a/dist/cleanup/index.js b/dist/cleanup/index.js
index bbc65296..b842e624 100644
--- a/dist/cleanup/index.js
+++ b/dist/cleanup/index.js
@@ -1249,16 +1249,24 @@ module.exports = toComparators
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.PropagationAPI = void 0;
+var global_utils_1 = __webpack_require__(525);
 var NoopTextMapPropagator_1 = __webpack_require__(918);
 var TextMapPropagator_1 = __webpack_require__(881);
-var global_utils_1 = __webpack_require__(525);
+var context_helpers_1 = __webpack_require__(483);
+var utils_1 = __webpack_require__(112);
+var diag_1 = __webpack_require__(118);
 var API_NAME = 'propagation';
+var NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Propagation API
  */
 var PropagationAPI = /** @class */ (function () {
     /** Empty private constructor prevents end users from constructing a new instance of the API */
     function PropagationAPI() {
+        this.createBaggage = utils_1.createBaggage;
+        this.getBaggage = context_helpers_1.getBaggage;
+        this.setBaggage = context_helpers_1.setBaggage;
+        this.deleteBaggage = context_helpers_1.deleteBaggage;
     }
     /** Get the singleton instance of the Propagator API */
     PropagationAPI.getInstance = function () {
@@ -1268,11 +1276,12 @@ var PropagationAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current propagator. Returns the initialized propagator
+     * Set the current propagator.
+     *
+     * @returns true if the propagator was successfully registered, else false
      */
     PropagationAPI.prototype.setGlobalPropagator = function (propagator) {
-        global_utils_1.registerGlobal(API_NAME, propagator);
-        return propagator;
+        return global_utils_1.registerGlobal(API_NAME, propagator, diag_1.DiagAPI.instance());
     };
     /**
      * Inject context into a carrier to be propagated inter-process
@@ -1304,10 +1313,10 @@ var PropagationAPI = /** @class */ (function () {
     };
     /** Remove the global propagator */
     PropagationAPI.prototype.disable = function () {
-        global_utils_1.unregisterGlobal(API_NAME);
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
     };
     PropagationAPI.prototype._getGlobalPropagator = function () {
-        return global_utils_1.getGlobal(API_NAME) || NoopTextMapPropagator_1.NOOP_TEXT_MAP_PROPAGATOR;
+        return global_utils_1.getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;
     };
     return PropagationAPI;
 }());
@@ -1866,17 +1875,16 @@ if (typeof Symbol === undefined || !Symbol.asyncIterator) {
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var __spreadArrays = (this && this.__spreadArrays) || function () {
-    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-    for (var r = Array(s), k = 0, i = 0; i < il; i++)
-        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-            r[k] = a[j];
-    return r;
+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
+    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+        to[j] = from[i];
+    return to;
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.ContextAPI = void 0;
 var NoopContextManager_1 = __webpack_require__(425);
 var global_utils_1 = __webpack_require__(525);
+var diag_1 = __webpack_require__(118);
 var API_NAME = 'context';
 var NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();
 /**
@@ -1894,11 +1902,12 @@ var ContextAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current context manager. Returns the initialized context manager
+     * Set the current context manager.
+     *
+     * @returns true if the context manager was successfully registered, else false
      */
     ContextAPI.prototype.setGlobalContextManager = function (contextManager) {
-        global_utils_1.registerGlobal(API_NAME, contextManager);
-        return contextManager;
+        return global_utils_1.registerGlobal(API_NAME, contextManager, diag_1.DiagAPI.instance());
     };
     /**
      * Get the currently active context
@@ -1920,17 +1929,16 @@ var ContextAPI = /** @class */ (function () {
         for (var _i = 3; _i < arguments.length; _i++) {
             args[_i - 3] = arguments[_i];
         }
-        return (_a = this._getContextManager()).with.apply(_a, __spreadArrays([context, fn, thisArg], args));
+        return (_a = this._getContextManager()).with.apply(_a, __spreadArray([context, fn, thisArg], args));
     };
     /**
      * Bind a context to a target function or event emitter
      *
-     * @param target function or event emitter to bind
      * @param context context to bind to the event emitter or function. Defaults to the currently active context
+     * @param target function or event emitter to bind
      */
-    ContextAPI.prototype.bind = function (target, context) {
-        if (context === void 0) { context = this.active(); }
-        return this._getContextManager().bind(target, context);
+    ContextAPI.prototype.bind = function (context, target) {
+        return this._getContextManager().bind(context, target);
     };
     ContextAPI.prototype._getContextManager = function () {
         return global_utils_1.getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;
@@ -1938,7 +1946,7 @@ var ContextAPI = /** @class */ (function () {
     /** Disable and remove the global context manager */
     ContextAPI.prototype.disable = function () {
         this._getContextManager().disable();
-        global_utils_1.unregisterGlobal(API_NAME);
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
     };
     return ContextAPI;
 }());
@@ -3634,7 +3642,63 @@ exports.AbortSignal = AbortSignal;
 /* 109 */,
 /* 110 */,
 /* 111 */,
-/* 112 */,
+/* 112 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.baggageEntryMetadataFromString = exports.createBaggage = void 0;
+var __1 = __webpack_require__(440);
+var baggage_impl_1 = __webpack_require__(666);
+var symbol_1 = __webpack_require__(561);
+/**
+ * Create a new Baggage with optional entries
+ *
+ * @param entries An array of baggage entries the new baggage should contain
+ */
+function createBaggage(entries) {
+    if (entries === void 0) { entries = {}; }
+    return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));
+}
+exports.createBaggage = createBaggage;
+/**
+ * Create a serializable BaggageEntryMetadata object from a string.
+ *
+ * @param str string metadata. Format is currently not defined by the spec and has no special meaning.
+ *
+ */
+function baggageEntryMetadataFromString(str) {
+    if (typeof str !== 'string') {
+        __1.diag.error("Cannot create baggage metadata from unknown type: " + typeof str);
+        str = '';
+    }
+    return {
+        __TYPE__: symbol_1.baggageEntryMetadataSymbol,
+        toString: function () {
+            return str;
+        },
+    };
+}
+exports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;
+//# sourceMappingURL=utils.js.map
+
+/***/ }),
 /* 113 */,
 /* 114 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
@@ -3883,6 +3947,7 @@ exports.saveCache = saveCache;
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.DiagAPI = void 0;
+var ComponentLogger_1 = __webpack_require__(362);
 var logLevelLogger_1 = __webpack_require__(673);
 var types_1 = __webpack_require__(545);
 var global_utils_1 = __webpack_require__(525);
@@ -3913,7 +3978,7 @@ var DiagAPI = /** @class */ (function () {
         var self = this;
         // DiagAPI specific functions
         self.setLogger = function (logger, logLevel) {
-            var _a;
+            var _a, _b;
             if (logLevel === void 0) { logLevel = types_1.DiagLogLevel.INFO; }
             if (logger === self) {
                 // There isn't much we can do here.
@@ -3921,12 +3986,23 @@ var DiagAPI = /** @class */ (function () {
                 // Try to log to self. If a logger was previously registered it will receive the log.
                 var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');
                 self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);
-                return;
+                return false;
             }
-            global_utils_1.registerGlobal('diag', logLevelLogger_1.createLogLevelDiagLogger(logLevel, logger), true);
+            var oldLogger = global_utils_1.getGlobal('diag');
+            var newLogger = logLevelLogger_1.createLogLevelDiagLogger(logLevel, logger);
+            // There already is an logger registered. We'll let it know before overwriting it.
+            if (oldLogger) {
+                var stack = (_b = new Error().stack) !== null && _b !== void 0 ? _b : '<failed to generate stacktrace>';
+                oldLogger.warn("Current logger will be overwritten from " + stack);
+                newLogger.warn("Current logger will overwrite one already registered from " + stack);
+            }
+            return global_utils_1.registerGlobal('diag', newLogger, self, true);
         };
         self.disable = function () {
-            global_utils_1.unregisterGlobal(API_NAME);
+            global_utils_1.unregisterGlobal(API_NAME, self);
+        };
+        self.createComponentLogger = function (options) {
+            return new ComponentLogger_1.DiagComponentLogger(options);
         };
         self.verbose = _logProxy('verbose');
         self.debug = _logProxy('debug');
@@ -4489,7 +4565,7 @@ module.exports = require("child_process");
 /* 130 */,
 /* 131 */,
 /* 132 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
+/***/ (function(__unusedmodule, exports) {
 
 "use strict";
 
@@ -4509,109 +4585,15 @@ module.exports = require("child_process");
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.ROOT_CONTEXT = exports.createContextKey = exports.setBaggage = exports.getBaggage = exports.isInstrumentationSuppressed = exports.unsuppressInstrumentation = exports.suppressInstrumentation = exports.getSpanContext = exports.setSpanContext = exports.setSpan = exports.getSpan = void 0;
-var NoopSpan_1 = __webpack_require__(767);
-/**
- * span key
- */
-var SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');
-/**
- * Shared key for indicating if instrumentation should be suppressed beyond
- * this current scope.
- */
-var SUPPRESS_INSTRUMENTATION_KEY = createContextKey('OpenTelemetry Context Key SUPPRESS_INSTRUMENTATION');
-/**
- * Baggage key
- */
-var BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');
-/**
- * Return the span if one exists
- *
- * @param context context to get span from
- */
-function getSpan(context) {
-    return context.getValue(SPAN_KEY) || undefined;
-}
-exports.getSpan = getSpan;
-/**
- * Set the span on a context
- *
- * @param context context to use as parent
- * @param span span to set active
- */
-function setSpan(context, span) {
-    return context.setValue(SPAN_KEY, span);
-}
-exports.setSpan = setSpan;
-/**
- * Wrap span context in a NoopSpan and set as span in a new
- * context
- *
- * @param context context to set active span on
- * @param spanContext span context to be wrapped
- */
-function setSpanContext(context, spanContext) {
-    return setSpan(context, new NoopSpan_1.NoopSpan(spanContext));
-}
-exports.setSpanContext = setSpanContext;
-/**
- * Get the span context of the span if it exists.
- *
- * @param context context to get values from
- */
-function getSpanContext(context) {
-    var _a;
-    return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.context();
-}
-exports.getSpanContext = getSpanContext;
-/**
- * Sets value on context to indicate that instrumentation should
- * be suppressed beyond this current scope.
- *
- * @param context context to set the suppress instrumentation value on.
- */
-function suppressInstrumentation(context) {
-    return context.setValue(SUPPRESS_INSTRUMENTATION_KEY, true);
-}
-exports.suppressInstrumentation = suppressInstrumentation;
-/**
- * Sets value on context to indicate that instrumentation should
- * no-longer be suppressed beyond this current scope.
- *
- * @param context context to set the suppress instrumentation value on.
- */
-function unsuppressInstrumentation(context) {
-    return context.setValue(SUPPRESS_INSTRUMENTATION_KEY, false);
-}
-exports.unsuppressInstrumentation = unsuppressInstrumentation;
-/**
- * Return current suppress instrumentation value for the given context,
- * if it exists.
- *
- * @param context context check for the suppress instrumentation value.
- */
-function isInstrumentationSuppressed(context) {
-    return Boolean(context.getValue(SUPPRESS_INSTRUMENTATION_KEY));
-}
-exports.isInstrumentationSuppressed = isInstrumentationSuppressed;
-/**
- * @param {Context} Context that manage all context values
- * @returns {Baggage} Extracted baggage from the context
- */
-function getBaggage(context) {
-    return context.getValue(BAGGAGE_KEY) || undefined;
-}
-exports.getBaggage = getBaggage;
-/**
- * @param {Context} Context that manage all context values
- * @param {Baggage} baggage that will be set in the actual context
- */
-function setBaggage(context, baggage) {
-    return context.setValue(BAGGAGE_KEY, baggage);
-}
-exports.setBaggage = setBaggage;
+exports.ROOT_CONTEXT = exports.createContextKey = void 0;
 /** Get a key to uniquely identify a context value */
 function createContextKey(description) {
+    // The specification states that for the same input, multiple calls should
+    // return different keys. Due to the nature of the JS dependency management
+    // system, this creates problems where multiple versions of some package
+    // could hold different keys for the same property.
+    //
+    // Therefore, we use Symbol.for which returns the same key for the same input.
     return Symbol.for(description);
 }
 exports.createContextKey = createContextKey;
@@ -4667,7 +4649,7 @@ exports.ROOT_CONTEXT = new BaseContext();
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.VERSION = void 0;
 // this is autogenerated file, see scripts/version-update.js
-exports.VERSION = '1.0.0-rc.0';
+exports.VERSION = '1.0.2';
 //# sourceMappingURL=version.js.map
 
 /***/ }),
@@ -4980,318 +4962,7 @@ module.exports = parseOptions
 
 
 /***/ }),
-/* 144 */
-/***/ (function(module) {
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
-
-
-/***/ }),
+/* 144 */,
 /* 145 */
 /***/ (function(__unusedmodule, exports) {
 
@@ -5377,9 +5048,10 @@ exports.fromPromise = function (fn) {
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TRACER = exports.NoopTracer = void 0;
-var context_1 = __webpack_require__(132);
-var NoopSpan_1 = __webpack_require__(767);
+exports.NoopTracer = void 0;
+var __1 = __webpack_require__(440);
+var context_utils_1 = __webpack_require__(720);
+var NonRecordingSpan_1 = __webpack_require__(437);
 var spancontext_utils_1 = __webpack_require__(629);
 /**
  * No-op implementations of {@link Tracer}.
@@ -5391,17 +5063,41 @@ var NoopTracer = /** @class */ (function () {
     NoopTracer.prototype.startSpan = function (name, options, context) {
         var root = Boolean(options === null || options === void 0 ? void 0 : options.root);
         if (root) {
-            return new NoopSpan_1.NoopSpan();
+            return new NonRecordingSpan_1.NonRecordingSpan();
         }
-        var parentFromContext = context && context_1.getSpanContext(context);
+        var parentFromContext = context && context_utils_1.getSpanContext(context);
         if (isSpanContext(parentFromContext) &&
             spancontext_utils_1.isSpanContextValid(parentFromContext)) {
-            return new NoopSpan_1.NoopSpan(parentFromContext);
+            return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);
         }
         else {
-            return new NoopSpan_1.NoopSpan();
+            return new NonRecordingSpan_1.NonRecordingSpan();
         }
     };
+    NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) {
+        var opts;
+        var ctx;
+        var fn;
+        if (arguments.length < 2) {
+            return;
+        }
+        else if (arguments.length === 2) {
+            fn = arg2;
+        }
+        else if (arguments.length === 3) {
+            opts = arg2;
+            fn = arg3;
+        }
+        else {
+            opts = arg2;
+            ctx = arg3;
+            fn = arg4;
+        }
+        var parentContext = ctx !== null && ctx !== void 0 ? ctx : __1.context.active();
+        var span = this.startSpan(name, opts, parentContext);
+        var contextWithSpanSet = context_utils_1.setSpan(parentContext, span);
+        return __1.context.with(contextWithSpanSet, fn, undefined, span);
+    };
     return NoopTracer;
 }());
 exports.NoopTracer = NoopTracer;
@@ -5411,7 +5107,6 @@ function isSpanContext(spanContext) {
         typeof spanContext['traceId'] === 'string' &&
         typeof spanContext['traceFlags'] === 'number');
 }
-exports.NOOP_TRACER = new NoopTracer();
 //# sourceMappingURL=NoopTracer.js.map
 
 /***/ }),
@@ -5646,7 +5341,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TRACER_PROVIDER = exports.NoopTracerProvider = void 0;
+exports.NoopTracerProvider = void 0;
 var NoopTracer_1 = __webpack_require__(151);
 /**
  * An implementation of the {@link TracerProvider} which returns an impotent
@@ -5658,12 +5353,11 @@ var NoopTracerProvider = /** @class */ (function () {
     function NoopTracerProvider() {
     }
     NoopTracerProvider.prototype.getTracer = function (_name, _version) {
-        return NoopTracer_1.NOOP_TRACER;
+        return new NoopTracer_1.NoopTracer();
     };
     return NoopTracerProvider;
 }());
 exports.NoopTracerProvider = NoopTracerProvider;
-exports.NOOP_TRACER_PROVIDER = new NoopTracerProvider();
 //# sourceMappingURL=NoopTracerProvider.js.map
 
 /***/ }),
@@ -6196,7 +5890,7 @@ function removePrivateKeyFromKeychain() {
                 yield gpg.deleteKey(keyFingerprint);
             }
             catch (error) {
-                core.setFailed('Failed to remove private key');
+                core.setFailed(`Failed to remove private key due to: ${error.message}`);
             }
         }
     });
@@ -7823,312 +7517,312 @@ module.exports = intersects
 /* 262 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -8141,205 +7835,6 @@ var __createBinding;
 Object.defineProperty(exports, '__esModule', { value: true });
 
 var api = __webpack_require__(440);
-var tslib = __webpack_require__(144);
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-/**
- * A no-op implementation of Span that can safely be used without side-effects.
- */
-var NoOpSpan = /** @class */ (function () {
-    function NoOpSpan() {
-    }
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    NoOpSpan.prototype.context = function () {
-        return {
-            spanId: "",
-            traceId: "",
-            traceFlags: 0 /* NONE */
-        };
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param _endTime - The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    NoOpSpan.prototype.end = function (_endTime) {
-        /* Noop */
-    };
-    /**
-     * Sets an attribute on the Span
-     * @param _key - The attribute key
-     * @param _value - The attribute value
-     */
-    NoOpSpan.prototype.setAttribute = function (_key, _value) {
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param _attributes - The attributes to add
-     */
-    NoOpSpan.prototype.setAttributes = function (_attributes) {
-        return this;
-    };
-    /**
-     * Adds an event to the Span
-     * @param _name - The name of the event
-     * @param _attributes - The associated attributes to add for this event
-     */
-    NoOpSpan.prototype.addEvent = function (_name, _attributes) {
-        return this;
-    };
-    /**
-     * Sets a status on the span. Overrides the default of SpanStatusCode.OK.
-     * @param _status - The status to set.
-     */
-    NoOpSpan.prototype.setStatus = function (_status) {
-        return this;
-    };
-    /**
-     * Updates the name of the Span
-     * @param _name - the new Span name
-     */
-    NoOpSpan.prototype.updateName = function (_name) {
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    NoOpSpan.prototype.isRecording = function () {
-        return false;
-    };
-    /**
-     * Sets exception as a span event
-     * @param exception - the exception the only accepted values are string or Error
-     * @param time - the time to set as Span's event time. If not provided,
-     *     use the current time.
-     */
-    NoOpSpan.prototype.recordException = function (_exception, _time) {
-        /* do nothing */
-    };
-    return NoOpSpan;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A no-op implementation of Tracer that can be used when tracing
- * is disabled.
- */
-var NoOpTracer = /** @class */ (function () {
-    function NoOpTracer() {
-    }
-    /**
-     * Starts a new Span.
-     * @param _name - The name of the span.
-     * @param _options - The SpanOptions used during Span creation.
-     */
-    NoOpTracer.prototype.startSpan = function (_name, _options) {
-        return new NoOpSpan();
-    };
-    /**
-     * Returns the current Span from the current context, if available.
-     */
-    NoOpTracer.prototype.getCurrentSpan = function () {
-        return new NoOpSpan();
-    };
-    /**
-     * Executes the given function within the context provided by a Span.
-     * @param _span - The span that provides the context.
-     * @param fn - The function to be executed.
-     */
-    NoOpTracer.prototype.withSpan = function (_span, fn) {
-        return fn();
-    };
-    /**
-     * Bind a Span as the target's scope
-     * @param target - An object to bind the scope.
-     * @param _span - A specific Span to use. Otherwise, use the current one.
-     */
-    NoOpTracer.prototype.bind = function (target, _span) {
-        return target;
-    };
-    return NoOpTracer;
-}());
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-function getGlobalObject() {
-    return global;
-}
-
-// Copyright (c) Microsoft Corporation.
-// V1 = OpenTelemetry 0.1
-// V2 = OpenTelemetry 0.2
-// V3 = OpenTelemetry 0.6.1
-// V4 = OpenTelemetry 1.0.0-rc.0
-var GLOBAL_TRACER_VERSION = 4;
-// preview5 shipped with @azure/core-tracing.tracerCache
-// and didn't have smart detection for collisions
-var GLOBAL_TRACER_SYMBOL = Symbol.for("@azure/core-tracing.tracerCache3");
-var cache;
-function loadTracerCache() {
-    var globalObj = getGlobalObject();
-    var existingCache = globalObj[GLOBAL_TRACER_SYMBOL];
-    var setGlobalCache = true;
-    if (existingCache) {
-        if (existingCache.version === GLOBAL_TRACER_VERSION) {
-            cache = existingCache;
-        }
-        else {
-            setGlobalCache = false;
-            if (existingCache.tracer) {
-                throw new Error("Two incompatible versions of @azure/core-tracing have been loaded.\n          This library is " + GLOBAL_TRACER_VERSION + ", existing is " + existingCache.version + ".");
-            }
-        }
-    }
-    if (!cache) {
-        cache = {
-            tracer: undefined,
-            version: GLOBAL_TRACER_VERSION
-        };
-    }
-    if (setGlobalCache) {
-        globalObj[GLOBAL_TRACER_SYMBOL] = cache;
-    }
-}
-function getCache() {
-    if (!cache) {
-        loadTracerCache();
-    }
-    return cache;
-}
-
-// Copyright (c) Microsoft Corporation.
-var defaultTracer;
-function getDefaultTracer() {
-    if (!defaultTracer) {
-        defaultTracer = new NoOpTracer();
-    }
-    return defaultTracer;
-}
-/**
- * Sets the global tracer, enabling tracing for the Azure SDK.
- * @param tracer - An OpenTelemetry Tracer instance.
- */
-function setTracer(tracer) {
-    var cache = getCache();
-    cache.tracer = tracer;
-}
-/**
- * Retrieves the active tracer, or returns a
- * no-op implementation if one is not set.
- */
-function getTracer() {
-    var cache = getCache();
-    if (!cache.tracer) {
-        return getDefaultTracer();
-    }
-    return cache.tracer;
-}
 
 // Copyright (c) Microsoft Corporation.
 (function (SpanKind) {
@@ -8374,7 +7869,7 @@ function getTracer() {
  * @param context - context to get span from
  */
 function getSpan(context) {
-    return api.getSpan(context);
+    return api.trace.getSpan(context);
 }
 /**
  * Set the span on a context
@@ -8383,7 +7878,7 @@ function getSpan(context) {
  * @param span - span to set active
  */
 function setSpan(context, span) {
-    return api.setSpan(context, span);
+    return api.trace.setSpan(context, span);
 }
 /**
  * Wrap span context in a NoopSpan and set as span in a new
@@ -8393,7 +7888,7 @@ function setSpan(context, span) {
  * @param spanContext - span context to be wrapped
  */
 function setSpanContext(context, spanContext) {
-    return api.setSpanContext(context, spanContext);
+    return api.trace.setSpanContext(context, spanContext);
 }
 /**
  * Get the span context of the span if it exists.
@@ -8401,10 +7896,24 @@ function setSpanContext(context, spanContext) {
  * @param context - context to get values from
  */
 function getSpanContext(context) {
-    return api.getSpanContext(context);
+    return api.trace.getSpanContext(context);
+}
+/**
+ * Returns true of the given {@link SpanContext} is valid.
+ * A valid {@link SpanContext} is one which has a valid trace ID and span ID as per the spec.
+ *
+ * @param context - the {@link SpanContext} to validate.
+ *
+ * @returns true if the {@link SpanContext} is valid, false otherwise.
+ */
+function isSpanContextValid(context) {
+    return api.trace.isSpanContextValid(context);
+}
+function getTracer(name, version) {
+    return api.trace.getTracer(name || "azure/core-tracing", version);
 }
 /** Entrypoint for context API */
-var context = api.context;
+const context = api.context;
 (function (SpanStatusCode) {
     /**
      * The default status.
@@ -8422,422 +7931,18 @@ var context = api.context;
 })(exports.SpanStatusCode || (exports.SpanStatusCode = {}));
 
 // Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-/**
- * @internal
- */
-var OpenCensusTraceStateWrapper = /** @class */ (function () {
-    function OpenCensusTraceStateWrapper(state) {
-        this._state = state;
+function isTracingDisabled() {
+    var _a;
+    if (typeof process === "undefined") {
+        // not supported in browser for now without polyfills
+        return false;
     }
-    OpenCensusTraceStateWrapper.prototype.get = function (_key) {
-        throw new Error("Method not implemented.");
-    };
-    OpenCensusTraceStateWrapper.prototype.set = function (_key, _value) {
-        throw new Error("Method not implemented.");
-    };
-    OpenCensusTraceStateWrapper.prototype.unset = function (_key) {
-        throw new Error("Method not implemented");
-    };
-    OpenCensusTraceStateWrapper.prototype.serialize = function () {
-        return this._state || "";
-    };
-    return OpenCensusTraceStateWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/** An enumeration of canonical status codes. */
-var CanonicalCode;
-(function (CanonicalCode) {
-    /**
-     * Not an error; returned on success
-     */
-    CanonicalCode[CanonicalCode["OK"] = 0] = "OK";
-    /**
-     * Internal errors.  Means some invariants expected by underlying
-     * system has been broken.  If you see one of these errors,
-     * something is very broken.
-     */
-    CanonicalCode[CanonicalCode["INTERNAL"] = 13] = "INTERNAL";
-})(CanonicalCode || (CanonicalCode = {}));
-function isWrappedSpan(span) {
-    return !!span && span.getWrappedSpan !== undefined;
+    const azureTracingDisabledValue = (_a = process.env.AZURE_TRACING_DISABLED) === null || _a === void 0 ? void 0 : _a.toLowerCase();
+    if (azureTracingDisabledValue === "false" || azureTracingDisabledValue === "0") {
+        return false;
+    }
+    return Boolean(azureTracingDisabledValue);
 }
-function isTracer(tracerOrSpan) {
-    return tracerOrSpan.getWrappedTracer !== undefined;
-}
-/**
- * An implementation of OpenTelemetry Span that wraps an OpenCensus Span.
- */
-var OpenCensusSpanWrapper = /** @class */ (function () {
-    function OpenCensusSpanWrapper(tracerOrSpan, name, options, context$1) {
-        if (name === void 0) { name = ""; }
-        if (options === void 0) { options = {}; }
-        if (isTracer(tracerOrSpan)) {
-            var span = getSpan(context$1 !== null && context$1 !== void 0 ? context$1 : context.active());
-            var parent = isWrappedSpan(span) ? span.getWrappedSpan() : undefined;
-            this._span = tracerOrSpan.getWrappedTracer().startChildSpan({
-                name: name,
-                childOf: parent
-            });
-            this._span.start();
-            if (options.links) {
-                for (var _i = 0, _a = options.links; _i < _a.length; _i++) {
-                    var link = _a[_i];
-                    // Since there is no way to set the link relationship, leave it as Unspecified.
-                    this._span.addLink(link.context.traceId, link.context.spanId, 0 /* LinkType.UNSPECIFIED */, link.attributes);
-                }
-            }
-        }
-        else {
-            this._span = tracerOrSpan;
-        }
-    }
-    /**
-     * The underlying OpenCensus Span
-     */
-    OpenCensusSpanWrapper.prototype.getWrappedSpan = function () {
-        return this._span;
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param endTime - The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    OpenCensusSpanWrapper.prototype.end = function (_endTime) {
-        this._span.end();
-    };
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    OpenCensusSpanWrapper.prototype.context = function () {
-        var openCensusSpanContext = this._span.spanContext;
-        return {
-            spanId: openCensusSpanContext.spanId,
-            traceId: openCensusSpanContext.traceId,
-            traceFlags: openCensusSpanContext.options,
-            traceState: new OpenCensusTraceStateWrapper(openCensusSpanContext.traceState)
-        };
-    };
-    /**
-     * Sets an attribute on the Span
-     * @param key - The attribute key
-     * @param value - The attribute value
-     */
-    OpenCensusSpanWrapper.prototype.setAttribute = function (key, value) {
-        this._span.addAttribute(key, value);
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param attributes - The attributes to add
-     */
-    OpenCensusSpanWrapper.prototype.setAttributes = function (attributes) {
-        this._span.attributes = attributes;
-        return this;
-    };
-    /**
-     * Adds an event to the Span
-     * @param name - The name of the event
-     * @param attributes - The associated attributes to add for this event
-     */
-    OpenCensusSpanWrapper.prototype.addEvent = function (_name, _attributes) {
-        throw new Error("Method not implemented.");
-    };
-    /**
-     * Sets a status on the span. Overrides the default of SpanStatusCode.OK.
-     * @param status - The status to set.
-     */
-    OpenCensusSpanWrapper.prototype.setStatus = function (status) {
-        switch (status.code) {
-            case exports.SpanStatusCode.ERROR: {
-                this._span.setStatus(CanonicalCode.INTERNAL, status.message);
-                break;
-            }
-            case exports.SpanStatusCode.OK: {
-                this._span.setStatus(CanonicalCode.OK, status.message);
-                break;
-            }
-            case exports.SpanStatusCode.UNSET: {
-                break;
-            }
-        }
-        return this;
-    };
-    /**
-     * Updates the name of the Span
-     * @param name - The new Span name
-     */
-    OpenCensusSpanWrapper.prototype.updateName = function (name) {
-        this._span.name = name;
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    OpenCensusSpanWrapper.prototype.isRecording = function () {
-        // NoRecordSpans have an empty traceId
-        return !!this._span.traceId;
-    };
-    /**
-     * Sets exception as a span event
-     * @param exception - the exception the only accepted values are string or Error
-     * @param time - the time to set as Span's event time. If not provided,
-     *     use the current time.
-     */
-    OpenCensusSpanWrapper.prototype.recordException = function (_exception, _time) {
-        throw new Error("Method not implemented");
-    };
-    return OpenCensusSpanWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * An implementation of OpenTelemetry Tracer that wraps an OpenCensus Tracer.
- */
-var OpenCensusTracerWrapper = /** @class */ (function () {
-    /**
-     * Create a new wrapper around a given OpenCensus Tracer.
-     * @param tracer - The OpenCensus Tracer to wrap.
-     */
-    function OpenCensusTracerWrapper(tracer) {
-        this._tracer = tracer;
-    }
-    /**
-     * The wrapped OpenCensus Tracer
-     */
-    OpenCensusTracerWrapper.prototype.getWrappedTracer = function () {
-        return this._tracer;
-    };
-    /**
-     * Starts a new Span.
-     * @param name - The name of the span.
-     * @param options - The SpanOptions used during Span creation.
-     */
-    OpenCensusTracerWrapper.prototype.startSpan = function (name, options) {
-        return new OpenCensusSpanWrapper(this, name, options);
-    };
-    /**
-     * Returns the current Span from the current context, if available.
-     */
-    OpenCensusTracerWrapper.prototype.getCurrentSpan = function () {
-        return undefined;
-    };
-    /**
-     * Executes the given function within the context provided by a Span.
-     * @param _span - The span that provides the context.
-     * @param _fn - The function to be executed.
-     */
-    OpenCensusTracerWrapper.prototype.withSpan = function (_span, _fn) {
-        throw new Error("Method not implemented.");
-    };
-    /**
-     * Bind a Span as the target's scope
-     * @param target - An object to bind the scope.
-     * @param _span - A specific Span to use. Otherwise, use the current one.
-     */
-    OpenCensusTracerWrapper.prototype.bind = function (_target, _span) {
-        throw new Error("Method not implemented.");
-    };
-    return OpenCensusTracerWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A mock span useful for testing.
- */
-var TestSpan = /** @class */ (function (_super) {
-    tslib.__extends(TestSpan, _super);
-    /**
-     * Starts a new Span.
-     * @param parentTracer-  The tracer that created this Span
-     * @param name - The name of the span.
-     * @param context - The SpanContext this span belongs to
-     * @param kind - The SpanKind of this Span
-     * @param parentSpanId - The identifier of the parent Span
-     * @param startTime - The startTime of the event (defaults to now)
-     */
-    function TestSpan(parentTracer, name, context, kind, parentSpanId, startTime) {
-        if (startTime === void 0) { startTime = Date.now(); }
-        var _this = _super.call(this) || this;
-        _this._tracer = parentTracer;
-        _this.name = name;
-        _this.kind = kind;
-        _this.startTime = startTime;
-        _this.parentSpanId = parentSpanId;
-        _this.status = {
-            code: exports.SpanStatusCode.OK
-        };
-        _this.endCalled = false;
-        _this._context = context;
-        _this.attributes = {};
-        return _this;
-    }
-    /**
-     * Returns the Tracer that created this Span
-     */
-    TestSpan.prototype.tracer = function () {
-        return this._tracer;
-    };
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    TestSpan.prototype.context = function () {
-        return this._context;
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param _endTime - The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    TestSpan.prototype.end = function (_endTime) {
-        this.endCalled = true;
-    };
-    /**
-     * Sets a status on the span. Overrides the default of SpanStatusCode.OK.
-     * @param status - The status to set.
-     */
-    TestSpan.prototype.setStatus = function (status) {
-        this.status = status;
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    TestSpan.prototype.isRecording = function () {
-        return true;
-    };
-    /**
-     * Sets an attribute on the Span
-     * @param key - The attribute key
-     * @param value - The attribute value
-     */
-    TestSpan.prototype.setAttribute = function (key, value) {
-        this.attributes[key] = value;
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param attributes - The attributes to add
-     */
-    TestSpan.prototype.setAttributes = function (attributes) {
-        for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {
-            var key = _a[_i];
-            this.attributes[key] = attributes[key];
-        }
-        return this;
-    };
-    return TestSpan;
-}(NoOpSpan));
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A mock tracer useful for testing
- */
-var TestTracer = /** @class */ (function (_super) {
-    tslib.__extends(TestTracer, _super);
-    function TestTracer() {
-        var _this = _super !== null && _super.apply(this, arguments) || this;
-        _this.traceIdCounter = 0;
-        _this.spanIdCounter = 0;
-        _this.rootSpans = [];
-        _this.knownSpans = [];
-        return _this;
-    }
-    TestTracer.prototype.getNextTraceId = function () {
-        this.traceIdCounter++;
-        return String(this.traceIdCounter);
-    };
-    TestTracer.prototype.getNextSpanId = function () {
-        this.spanIdCounter++;
-        return String(this.spanIdCounter);
-    };
-    /**
-     * Returns all Spans that were created without a parent
-     */
-    TestTracer.prototype.getRootSpans = function () {
-        return this.rootSpans;
-    };
-    /**
-     * Returns all Spans this Tracer knows about
-     */
-    TestTracer.prototype.getKnownSpans = function () {
-        return this.knownSpans;
-    };
-    /**
-     * Returns all Spans where end() has not been called
-     */
-    TestTracer.prototype.getActiveSpans = function () {
-        return this.knownSpans.filter(function (span) {
-            return !span.endCalled;
-        });
-    };
-    /**
-     * Return all Spans for a particular trace, grouped by their
-     * parent Span in a tree-like structure
-     * @param traceId - The traceId to return the graph for
-     */
-    TestTracer.prototype.getSpanGraph = function (traceId) {
-        var traceSpans = this.knownSpans.filter(function (span) {
-            return span.context().traceId === traceId;
-        });
-        var roots = [];
-        var nodeMap = new Map();
-        for (var _i = 0, traceSpans_1 = traceSpans; _i < traceSpans_1.length; _i++) {
-            var span = traceSpans_1[_i];
-            var spanId = span.context().spanId;
-            var node = {
-                name: span.name,
-                children: []
-            };
-            nodeMap.set(spanId, node);
-            if (span.parentSpanId) {
-                var parent = nodeMap.get(span.parentSpanId);
-                if (!parent) {
-                    throw new Error("Span with name " + node.name + " has an unknown parentSpan with id " + span.parentSpanId);
-                }
-                parent.children.push(node);
-            }
-            else {
-                roots.push(node);
-            }
-        }
-        return {
-            roots: roots
-        };
-    };
-    /**
-     * Starts a new Span.
-     * @param name - The name of the span.
-     * @param options - The SpanOptions used during Span creation.
-     */
-    TestTracer.prototype.startSpan = function (name, options, context$1) {
-        var parentContext = getSpanContext(context$1 || context.active());
-        var traceId;
-        var isRootSpan = false;
-        if (parentContext && parentContext.traceId) {
-            traceId = parentContext.traceId;
-        }
-        else {
-            traceId = this.getNextTraceId();
-            isRootSpan = true;
-        }
-        var spanContext = {
-            traceId: traceId,
-            spanId: this.getNextSpanId(),
-            traceFlags: 0 /* NONE */
-        };
-        var span = new TestSpan(this, name, spanContext, (options === null || options === void 0 ? void 0 : options.kind) || exports.SpanKind.INTERNAL, parentContext ? parentContext.spanId : undefined, options === null || options === void 0 ? void 0 : options.startTime);
-        this.knownSpans.push(span);
-        if (isRootSpan) {
-            this.rootSpans.push(span);
-        }
-        return span;
-    };
-    return TestTracer;
-}(NoOpTracer));
-
-// Copyright (c) Microsoft Corporation.
 /**
  * Creates a function that can be used to create spans using the global tracer.
  *
@@ -8858,22 +7963,28 @@ var TestTracer = /** @class */ (function (_super) {
  */
 function createSpanFunction(args) {
     return function (operationName, operationOptions) {
-        var tracer = getTracer();
-        var tracingOptions = (operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) || {};
-        var spanOptions = tslib.__assign({ kind: exports.SpanKind.INTERNAL }, tracingOptions.spanOptions);
-        var spanName = args.packagePrefix ? args.packagePrefix + "." + operationName : operationName;
-        var span = tracer.startSpan(spanName, spanOptions, tracingOptions.tracingContext);
+        const tracer = getTracer();
+        const tracingOptions = (operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) || {};
+        const spanOptions = Object.assign({ kind: exports.SpanKind.INTERNAL }, tracingOptions.spanOptions);
+        const spanName = args.packagePrefix ? `${args.packagePrefix}.${operationName}` : operationName;
+        let span;
+        if (isTracingDisabled()) {
+            span = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT);
+        }
+        else {
+            span = tracer.startSpan(spanName, spanOptions, tracingOptions.tracingContext);
+        }
         if (args.namespace) {
             span.setAttribute("az.namespace", args.namespace);
         }
-        var newSpanOptions = tracingOptions.spanOptions || {};
+        let newSpanOptions = tracingOptions.spanOptions || {};
         if (span.isRecording() && args.namespace) {
-            newSpanOptions = tslib.__assign(tslib.__assign({}, tracingOptions.spanOptions), { attributes: tslib.__assign(tslib.__assign({}, spanOptions.attributes), { "az.namespace": args.namespace }) });
+            newSpanOptions = Object.assign(Object.assign({}, tracingOptions.spanOptions), { attributes: Object.assign(Object.assign({}, spanOptions.attributes), { "az.namespace": args.namespace }) });
         }
-        var newTracingOptions = tslib.__assign(tslib.__assign({}, tracingOptions), { spanOptions: newSpanOptions, tracingContext: setSpan(tracingOptions.tracingContext || context.active(), span) });
-        var newOperationOptions = tslib.__assign(tslib.__assign({}, operationOptions), { tracingOptions: newTracingOptions });
+        const newTracingOptions = Object.assign(Object.assign({}, tracingOptions), { spanOptions: newSpanOptions, tracingContext: setSpan(tracingOptions.tracingContext || context.active(), span) });
+        const newOperationOptions = Object.assign(Object.assign({}, operationOptions), { tracingOptions: newTracingOptions });
         return {
-            span: span,
+            span,
             updatedOptions: newOperationOptions
         };
     };
@@ -8881,26 +7992,26 @@ function createSpanFunction(args) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var VERSION = "00";
+const VERSION = "00";
 /**
  * Generates a `SpanContext` given a `traceparent` header value.
  * @param traceParent - Serialized span context data as a `traceparent` header value.
  * @returns The `SpanContext` generated from the `traceparent` value.
  */
 function extractSpanContextFromTraceParentHeader(traceParentHeader) {
-    var parts = traceParentHeader.split("-");
+    const parts = traceParentHeader.split("-");
     if (parts.length !== 4) {
         return;
     }
-    var version = parts[0], traceId = parts[1], spanId = parts[2], traceOptions = parts[3];
+    const [version, traceId, spanId, traceOptions] = parts;
     if (version !== VERSION) {
         return;
     }
-    var traceFlags = parseInt(traceOptions, 16);
-    var spanContext = {
-        spanId: spanId,
-        traceId: traceId,
-        traceFlags: traceFlags
+    const traceFlags = parseInt(traceOptions, 16);
+    const spanContext = {
+        spanId,
+        traceId,
+        traceFlags
     };
     return spanContext;
 }
@@ -8910,7 +8021,7 @@ function extractSpanContextFromTraceParentHeader(traceParentHeader) {
  * @returns The `spanContext` represented as a `traceparent` value.
  */
 function getTraceParentHeader(spanContext) {
-    var missingFields = [];
+    const missingFields = [];
     if (!spanContext.traceId) {
         missingFields.push("traceId");
     }
@@ -8920,19 +8031,13 @@ function getTraceParentHeader(spanContext) {
     if (missingFields.length) {
         return;
     }
-    var flags = spanContext.traceFlags || 0 /* NONE */;
-    var hexFlags = flags.toString(16);
-    var traceFlags = hexFlags.length === 1 ? "0" + hexFlags : hexFlags;
+    const flags = spanContext.traceFlags || 0 /* NONE */;
+    const hexFlags = flags.toString(16);
+    const traceFlags = hexFlags.length === 1 ? `0${hexFlags}` : hexFlags;
     // https://www.w3.org/TR/trace-context/#traceparent-header-field-values
-    return VERSION + "-" + spanContext.traceId + "-" + spanContext.spanId + "-" + traceFlags;
+    return `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-${traceFlags}`;
 }
 
-exports.NoOpSpan = NoOpSpan;
-exports.NoOpTracer = NoOpTracer;
-exports.OpenCensusSpanWrapper = OpenCensusSpanWrapper;
-exports.OpenCensusTracerWrapper = OpenCensusTracerWrapper;
-exports.TestSpan = TestSpan;
-exports.TestTracer = TestTracer;
 exports.context = context;
 exports.createSpanFunction = createSpanFunction;
 exports.extractSpanContextFromTraceParentHeader = extractSpanContextFromTraceParentHeader;
@@ -8940,9 +8045,9 @@ exports.getSpan = getSpan;
 exports.getSpanContext = getSpanContext;
 exports.getTraceParentHeader = getTraceParentHeader;
 exports.getTracer = getTracer;
+exports.isSpanContextValid = isSpanContextValid;
 exports.setSpan = setSpan;
 exports.setSpanContext = setSpanContext;
-exports.setTracer = setTracer;
 //# sourceMappingURL=index.js.map
 
 
@@ -10025,7 +9130,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
 
 function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
 
-var tslib = __webpack_require__(865);
 var uuid = __webpack_require__(585);
 var tough = __webpack_require__(393);
 var http = __webpack_require__(605);
@@ -10038,6 +9142,7 @@ var url = __webpack_require__(835);
 var stream = __webpack_require__(794);
 var logger$1 = __webpack_require__(492);
 var tunnel = __webpack_require__(413);
+var tslib = __webpack_require__(865);
 var coreAuth = __webpack_require__(229);
 var xml2js = __webpack_require__(992);
 var os = __webpack_require__(87);
@@ -10054,7 +9159,7 @@ function getHeaderKey(headerName) {
 }
 function isHttpHeadersLike(object) {
     if (object && typeof object === "object") {
-        var castObject = object;
+        const castObject = object;
         if (typeof castObject.rawHeaders === "function" &&
             typeof castObject.clone === "function" &&
             typeof castObject.get === "function" &&
@@ -10073,11 +9178,11 @@ function isHttpHeadersLike(object) {
 /**
  * A collection of HTTP header key/value pairs.
  */
-var HttpHeaders = /** @class */ (function () {
-    function HttpHeaders(rawHeaders) {
+class HttpHeaders {
+    constructor(rawHeaders) {
         this._headersMap = {};
         if (rawHeaders) {
-            for (var headerName in rawHeaders) {
+            for (const headerName in rawHeaders) {
                 this.set(headerName, rawHeaders[headerName]);
             }
         }
@@ -10088,100 +9193,99 @@ var HttpHeaders = /** @class */ (function () {
      * @param headerName - The name of the header to set. This value is case-insensitive.
      * @param headerValue - The value of the header to set.
      */
-    HttpHeaders.prototype.set = function (headerName, headerValue) {
+    set(headerName, headerValue) {
         this._headersMap[getHeaderKey(headerName)] = {
             name: headerName,
             value: headerValue.toString()
         };
-    };
+    }
     /**
      * Get the header value for the provided header name, or undefined if no header exists in this
      * collection with the provided name.
      * @param headerName - The name of the header.
      */
-    HttpHeaders.prototype.get = function (headerName) {
-        var header = this._headersMap[getHeaderKey(headerName)];
+    get(headerName) {
+        const header = this._headersMap[getHeaderKey(headerName)];
         return !header ? undefined : header.value;
-    };
+    }
     /**
      * Get whether or not this header collection contains a header entry for the provided header name.
      */
-    HttpHeaders.prototype.contains = function (headerName) {
+    contains(headerName) {
         return !!this._headersMap[getHeaderKey(headerName)];
-    };
+    }
     /**
      * Remove the header with the provided headerName. Return whether or not the header existed and
      * was removed.
      * @param headerName - The name of the header to remove.
      */
-    HttpHeaders.prototype.remove = function (headerName) {
-        var result = this.contains(headerName);
+    remove(headerName) {
+        const result = this.contains(headerName);
         delete this._headersMap[getHeaderKey(headerName)];
         return result;
-    };
+    }
     /**
      * Get the headers that are contained this collection as an object.
      */
-    HttpHeaders.prototype.rawHeaders = function () {
-        var result = {};
-        for (var headerKey in this._headersMap) {
-            var header = this._headersMap[headerKey];
+    rawHeaders() {
+        const result = {};
+        for (const headerKey in this._headersMap) {
+            const header = this._headersMap[headerKey];
             result[header.name.toLowerCase()] = header.value;
         }
         return result;
-    };
+    }
     /**
      * Get the headers that are contained in this collection as an array.
      */
-    HttpHeaders.prototype.headersArray = function () {
-        var headers = [];
-        for (var headerKey in this._headersMap) {
+    headersArray() {
+        const headers = [];
+        for (const headerKey in this._headersMap) {
             headers.push(this._headersMap[headerKey]);
         }
         return headers;
-    };
+    }
     /**
      * Get the header names that are contained in this collection.
      */
-    HttpHeaders.prototype.headerNames = function () {
-        var headerNames = [];
-        var headers = this.headersArray();
-        for (var i = 0; i < headers.length; ++i) {
+    headerNames() {
+        const headerNames = [];
+        const headers = this.headersArray();
+        for (let i = 0; i < headers.length; ++i) {
             headerNames.push(headers[i].name);
         }
         return headerNames;
-    };
+    }
     /**
      * Get the header values that are contained in this collection.
      */
-    HttpHeaders.prototype.headerValues = function () {
-        var headerValues = [];
-        var headers = this.headersArray();
-        for (var i = 0; i < headers.length; ++i) {
+    headerValues() {
+        const headerValues = [];
+        const headers = this.headersArray();
+        for (let i = 0; i < headers.length; ++i) {
             headerValues.push(headers[i].value);
         }
         return headerValues;
-    };
+    }
     /**
      * Get the JSON object representation of this HTTP header collection.
      */
-    HttpHeaders.prototype.toJson = function () {
+    toJson() {
         return this.rawHeaders();
-    };
+    }
     /**
      * Get the string representation of this HTTP header collection.
      */
-    HttpHeaders.prototype.toString = function () {
+    toString() {
         return JSON.stringify(this.toJson());
-    };
+    }
     /**
      * Create a deep clone/copy of this HttpHeaders collection.
      */
-    HttpHeaders.prototype.clone = function () {
+    clone() {
         return new HttpHeaders(this.rawHeaders());
-    };
-    return HttpHeaders;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -10199,7 +9303,7 @@ function encodeString(value) {
 function encodeByteArray(value) {
     // Buffer.from accepts <ArrayBuffer> | <SharedArrayBuffer>-- the TypeScript definition is off here
     // https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length
-    var bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
+    const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
     return bufferValue.toString("base64");
 }
 /**
@@ -10212,11 +9316,11 @@ function decodeString(value) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var Constants = {
+const Constants = {
     /**
      * The core-http version
      */
-    coreHttpVersion: "1.2.6",
+    coreHttpVersion: "2.1.0",
     /**
      * Specifies HTTP.
      */
@@ -10255,7 +9359,8 @@ var Constants = {
             PATCH: "PATCH"
         },
         StatusCodes: {
-            TooManyRequests: 429
+            TooManyRequests: 429,
+            ServiceUnavailable: 503
         }
     },
     /**
@@ -10285,18 +9390,18 @@ var Constants = {
 /**
  * Default key used to access the XML attributes.
  */
-var XML_ATTRKEY = "$";
+const XML_ATTRKEY = "$";
 /**
  * Default key used to access the XML value content.
  */
-var XML_CHARKEY = "_";
+const XML_CHARKEY = "_";
 
 // Copyright (c) Microsoft Corporation.
-var validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;
+const validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;
 /**
  * A constant that indicates whether the environment is node.js or browser based.
  */
-var isNode = typeof process !== "undefined" &&
+const isNode = typeof process !== "undefined" &&
     !!process.version &&
     !!process.versions &&
     !!process.versions.node;
@@ -10322,7 +9427,7 @@ function encodeUri(uri) {
  * @returns The stripped version of Http Response.
  */
 function stripResponse(response) {
-    var strippedResponse = {};
+    const strippedResponse = {};
     strippedResponse.body = response.bodyAsText;
     strippedResponse.headers = response.headers;
     strippedResponse.status = response.status;
@@ -10336,7 +9441,7 @@ function stripResponse(response) {
  * @returns The stripped version of Http Request.
  */
 function stripRequest(request) {
-    var strippedRequest = request.clone();
+    const strippedRequest = request.clone();
     if (strippedRequest.headers) {
         strippedRequest.headers.remove("authorization");
     }
@@ -10369,21 +9474,12 @@ function generateUuid() {
  * @returns A chain of resolved or rejected promises
  */
 function executePromisesSequentially(promiseFactories, kickstart) {
-    var result = Promise.resolve(kickstart);
-    promiseFactories.forEach(function (promiseFactory) {
+    let result = Promise.resolve(kickstart);
+    promiseFactories.forEach((promiseFactory) => {
         result = result.then(promiseFactory);
     });
     return result;
 }
-/**
- * A wrapper for setTimeout that resolves a promise after t milliseconds.
- * @param t - The number of milliseconds to be delayed.
- * @param value - The value to be resolved with after a timeout of t milliseconds.
- * @returns Resolved promise
- */
-function delay(t, value) {
-    return new Promise(function (resolve) { return setTimeout(function () { return resolve(value); }, t); });
-}
 /**
  * Converts a Promise to a callback.
  * @param promise - The Promise to be converted to a callback
@@ -10396,13 +9492,13 @@ function promiseToCallback(promise) {
         throw new Error("The provided input is not a Promise.");
     }
     // eslint-disable-next-line @typescript-eslint/ban-types
-    return function (cb) {
+    return (cb) => {
         promise
-            .then(function (data) {
+            .then((data) => {
             // eslint-disable-next-line promise/no-callback-in-promise
             return cb(undefined, data);
         })
-            .catch(function (err) {
+            .catch((err) => {
             // eslint-disable-next-line promise/no-callback-in-promise
             cb(err);
         });
@@ -10417,26 +9513,25 @@ function promiseToServiceCallback(promise) {
     if (typeof promise.then !== "function") {
         throw new Error("The provided input is not a Promise.");
     }
-    return function (cb) {
+    return (cb) => {
         promise
-            .then(function (data) {
+            .then((data) => {
             return process.nextTick(cb, undefined, data.parsedBody, data.request, data);
         })
-            .catch(function (err) {
+            .catch((err) => {
             process.nextTick(cb, err);
         });
     };
 }
 function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {
-    var _a, _b, _c;
     if (!Array.isArray(obj)) {
         obj = [obj];
     }
     if (!xmlNamespaceKey || !xmlNamespace) {
-        return _a = {}, _a[elementName] = obj, _a;
+        return { [elementName]: obj };
     }
-    var result = (_b = {}, _b[elementName] = obj, _b);
-    result[XML_ATTRKEY] = (_c = {}, _c[xmlNamespaceKey] = xmlNamespace, _c);
+    const result = { [elementName]: obj };
+    result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };
     return result;
 }
 /**
@@ -10445,14 +9540,14 @@ function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {
  * @param sourceCtors - An array of source objects from which the properties need to be taken.
  */
 function applyMixins(targetCtorParam, sourceCtors) {
-    var castTargetCtorParam = targetCtorParam;
-    sourceCtors.forEach(function (sourceCtor) {
-        Object.getOwnPropertyNames(sourceCtor.prototype).forEach(function (name) {
+    const castTargetCtorParam = targetCtorParam;
+    sourceCtors.forEach((sourceCtor) => {
+        Object.getOwnPropertyNames(sourceCtor.prototype).forEach((name) => {
             castTargetCtorParam.prototype[name] = sourceCtor.prototype[name];
         });
     });
 }
-var validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
+const validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
 /**
  * Indicates whether the given string is in ISO 8601 format.
  * @param value - The value to be validated for ISO 8601 duration format.
@@ -10502,19 +9597,18 @@ function isObject(input) {
 }
 
 // Copyright (c) Microsoft Corporation.
-var Serializer = /** @class */ (function () {
-    function Serializer(modelMappers, isXML) {
-        if (modelMappers === void 0) { modelMappers = {}; }
+class Serializer {
+    constructor(modelMappers = {}, isXML) {
         this.modelMappers = modelMappers;
         this.isXML = isXML;
     }
-    Serializer.prototype.validateConstraints = function (mapper, value, objectName) {
-        var failValidation = function (constraintName, constraintValue) {
-            throw new Error("\"" + objectName + "\" with value \"" + value + "\" should satisfy the constraint \"" + constraintName + "\": " + constraintValue + ".");
+    validateConstraints(mapper, value, objectName) {
+        const failValidation = (constraintName, constraintValue) => {
+            throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`);
         };
         if (mapper.constraints && value != undefined) {
-            var valueAsNumber = value;
-            var _a = mapper.constraints, ExclusiveMaximum = _a.ExclusiveMaximum, ExclusiveMinimum = _a.ExclusiveMinimum, InclusiveMaximum = _a.InclusiveMaximum, InclusiveMinimum = _a.InclusiveMinimum, MaxItems = _a.MaxItems, MaxLength = _a.MaxLength, MinItems = _a.MinItems, MinLength = _a.MinLength, MultipleOf = _a.MultipleOf, Pattern = _a.Pattern, UniqueItems = _a.UniqueItems;
+            const valueAsNumber = value;
+            const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems } = mapper.constraints;
             if (ExclusiveMaximum != undefined && valueAsNumber >= ExclusiveMaximum) {
                 failValidation("ExclusiveMaximum", ExclusiveMaximum);
             }
@@ -10527,7 +9621,7 @@ var Serializer = /** @class */ (function () {
             if (InclusiveMinimum != undefined && valueAsNumber < InclusiveMinimum) {
                 failValidation("InclusiveMinimum", InclusiveMinimum);
             }
-            var valueAsArray = value;
+            const valueAsArray = value;
             if (MaxItems != undefined && valueAsArray.length > MaxItems) {
                 failValidation("MaxItems", MaxItems);
             }
@@ -10544,17 +9638,17 @@ var Serializer = /** @class */ (function () {
                 failValidation("MultipleOf", MultipleOf);
             }
             if (Pattern) {
-                var pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern;
+                const pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern;
                 if (typeof value !== "string" || value.match(pattern) === null) {
                     failValidation("Pattern", Pattern);
                 }
             }
             if (UniqueItems &&
-                valueAsArray.some(function (item, i, ar) { return ar.indexOf(item) !== i; })) {
+                valueAsArray.some((item, i, ar) => ar.indexOf(item) !== i)) {
                 failValidation("UniqueItems", UniqueItems);
             }
         }
-    };
+    }
     /**
      * Serialize the given object based on its metadata defined in the mapper
      *
@@ -10564,16 +9658,15 @@ var Serializer = /** @class */ (function () {
      * @param options - additional options to deserialization
      * @returns A valid serialized Javascript object
      */
-    Serializer.prototype.serialize = function (mapper, object, objectName, options) {
+    serialize(mapper, object, objectName, options = {}) {
         var _a, _b, _c;
-        if (options === void 0) { options = {}; }
-        var updatedOptions = {
+        const updatedOptions = {
             rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
             includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
             xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
         };
-        var payload = {};
-        var mapperType = mapper.type.name;
+        let payload = {};
+        const mapperType = mapper.type.name;
         if (!objectName) {
             objectName = mapper.serializedName;
         }
@@ -10592,15 +9685,15 @@ var Serializer = /** @class */ (function () {
         //      true || null      | undefined/null
         //     false || X         | undefined
         // undefined || X         | undefined/null
-        var required = mapper.required, nullable = mapper.nullable;
+        const { required, nullable } = mapper;
         if (required && nullable && object === undefined) {
-            throw new Error(objectName + " cannot be undefined.");
+            throw new Error(`${objectName} cannot be undefined.`);
         }
         if (required && !nullable && object == undefined) {
-            throw new Error(objectName + " cannot be null or undefined.");
+            throw new Error(`${objectName} cannot be null or undefined.`);
         }
         if (!required && nullable === false && object === null) {
-            throw new Error(objectName + " cannot be null.");
+            throw new Error(`${objectName} cannot be null.`);
         }
         if (object == undefined) {
             payload = object;
@@ -10615,7 +9708,7 @@ var Serializer = /** @class */ (function () {
                 payload = serializeBasicTypes(mapperType, objectName, object);
             }
             else if (mapperType.match(/^Enum$/i) !== null) {
-                var enumMapper = mapper;
+                const enumMapper = mapper;
                 payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);
             }
             else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {
@@ -10638,7 +9731,7 @@ var Serializer = /** @class */ (function () {
             }
         }
         return payload;
-    };
+    }
     /**
      * Deserialize the given object based on its metadata defined in the mapper
      *
@@ -10648,10 +9741,9 @@ var Serializer = /** @class */ (function () {
      * @param options - Controls behavior of XML parser and builder.
      * @returns A valid deserialized Javascript object
      */
-    Serializer.prototype.deserialize = function (mapper, responseBody, objectName, options) {
+    deserialize(mapper, responseBody, objectName, options = {}) {
         var _a, _b, _c;
-        if (options === void 0) { options = {}; }
-        var updatedOptions = {
+        const updatedOptions = {
             rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
             includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
             xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
@@ -10669,8 +9761,8 @@ var Serializer = /** @class */ (function () {
             }
             return responseBody;
         }
-        var payload;
-        var mapperType = mapper.type.name;
+        let payload;
+        const mapperType = mapper.type.name;
         if (!objectName) {
             objectName = mapper.serializedName;
         }
@@ -10679,8 +9771,8 @@ var Serializer = /** @class */ (function () {
         }
         else {
             if (this.isXML) {
-                var xmlCharKey = updatedOptions.xmlCharKey;
-                var castResponseBody = responseBody;
+                const xmlCharKey = updatedOptions.xmlCharKey;
+                const castResponseBody = responseBody;
                 /**
                  * If the mapper specifies this as a non-composite type value but the responseBody contains
                  * both header ("$" i.e., XML_ATTRKEY) and body ("#" i.e., XML_CHARKEY) properties,
@@ -10734,11 +9826,10 @@ var Serializer = /** @class */ (function () {
             payload = mapper.defaultValue;
         }
         return payload;
-    };
-    return Serializer;
-}());
+    }
+}
 function trimEnd(str, ch) {
-    var len = str.length;
+    let len = str.length;
     while (len - 1 >= 0 && str[len - 1] === ch) {
         --len;
     }
@@ -10749,10 +9840,10 @@ function bufferToBase64Url(buffer) {
         return undefined;
     }
     if (!(buffer instanceof Uint8Array)) {
-        throw new Error("Please provide an input of type Uint8Array for converting to Base64Url.");
+        throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);
     }
     // Uint8Array to Base64.
-    var str = encodeByteArray(buffer);
+    const str = encodeByteArray(buffer);
     // Base64 to Base64Url.
     return trimEnd(str, "=")
         .replace(/\+/g, "-")
@@ -10771,12 +9862,11 @@ function base64UrlToByteArray(str) {
     return decodeString(str);
 }
 function splitSerializeName(prop) {
-    var classes = [];
-    var partialclass = "";
+    const classes = [];
+    let partialclass = "";
     if (prop) {
-        var subwords = prop.split(".");
-        for (var _i = 0, subwords_1 = subwords; _i < subwords_1.length; _i++) {
-            var item = subwords_1[_i];
+        const subwords = prop.split(".");
+        for (const item of subwords) {
             if (item.charAt(item.length - 1) === "\\") {
                 partialclass += item.substr(0, item.length - 1) + ".";
             }
@@ -10808,32 +9898,32 @@ function serializeBasicTypes(typeName, objectName, value) {
     if (value !== null && value !== undefined) {
         if (typeName.match(/^Number$/i) !== null) {
             if (typeof value !== "number") {
-                throw new Error(objectName + " with value " + value + " must be of type number.");
+                throw new Error(`${objectName} with value ${value} must be of type number.`);
             }
         }
         else if (typeName.match(/^String$/i) !== null) {
             if (typeof value.valueOf() !== "string") {
-                throw new Error(objectName + " with value \"" + value + "\" must be of type string.");
+                throw new Error(`${objectName} with value "${value}" must be of type string.`);
             }
         }
         else if (typeName.match(/^Uuid$/i) !== null) {
             if (!(typeof value.valueOf() === "string" && isValidUuid(value))) {
-                throw new Error(objectName + " with value \"" + value + "\" must be of type string and a valid uuid.");
+                throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`);
             }
         }
         else if (typeName.match(/^Boolean$/i) !== null) {
             if (typeof value !== "boolean") {
-                throw new Error(objectName + " with value " + value + " must be of type boolean.");
+                throw new Error(`${objectName} with value ${value} must be of type boolean.`);
             }
         }
         else if (typeName.match(/^Stream$/i) !== null) {
-            var objectType = typeof value;
+            const objectType = typeof value;
             if (objectType !== "string" &&
                 objectType !== "function" &&
                 !(value instanceof ArrayBuffer) &&
                 !ArrayBuffer.isView(value) &&
                 !((typeof Blob === "function" || typeof Blob === "object") && value instanceof Blob)) {
-                throw new Error(objectName + " must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.");
+                throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.`);
             }
         }
     }
@@ -10841,34 +9931,34 @@ function serializeBasicTypes(typeName, objectName, value) {
 }
 function serializeEnumType(objectName, allowedValues, value) {
     if (!allowedValues) {
-        throw new Error("Please provide a set of allowedValues to validate " + objectName + " as an Enum Type.");
+        throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);
     }
-    var isPresent = allowedValues.some(function (item) {
+    const isPresent = allowedValues.some((item) => {
         if (typeof item.valueOf() === "string") {
             return item.toLowerCase() === value.toLowerCase();
         }
         return item === value;
     });
     if (!isPresent) {
-        throw new Error(value + " is not a valid value for " + objectName + ". The valid values are: " + JSON.stringify(allowedValues) + ".");
+        throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);
     }
     return value;
 }
 function serializeByteArrayType(objectName, value) {
-    var returnValue = "";
+    let returnValue = "";
     if (value != undefined) {
         if (!(value instanceof Uint8Array)) {
-            throw new Error(objectName + " must be of type Uint8Array.");
+            throw new Error(`${objectName} must be of type Uint8Array.`);
         }
         returnValue = encodeByteArray(value);
     }
     return returnValue;
 }
 function serializeBase64UrlType(objectName, value) {
-    var returnValue = "";
+    let returnValue = "";
     if (value != undefined) {
         if (!(value instanceof Uint8Array)) {
-            throw new Error(objectName + " must be of type Uint8Array.");
+            throw new Error(`${objectName} must be of type Uint8Array.`);
         }
         returnValue = bufferToBase64Url(value) || "";
     }
@@ -10879,7 +9969,7 @@ function serializeDateTypes(typeName, value, objectName) {
         if (typeName.match(/^Date$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);
             }
             value =
                 value instanceof Date
@@ -10889,58 +9979,57 @@ function serializeDateTypes(typeName, value, objectName) {
         else if (typeName.match(/^DateTime$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);
             }
             value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();
         }
         else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);
             }
             value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();
         }
         else if (typeName.match(/^UnixTime$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123/ISO8601 format " +
-                    "for it to be serialized in UnixTime/Epoch format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +
+                    `for it to be serialized in UnixTime/Epoch format.`);
             }
             value = dateToUnixTime(value);
         }
         else if (typeName.match(/^TimeSpan$/i) !== null) {
             if (!isDuration(value)) {
-                throw new Error(objectName + " must be a string in ISO 8601 format. Instead was \"" + value + "\".");
+                throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`);
             }
         }
     }
     return value;
 }
 function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {
-    var _a, _b;
     if (!Array.isArray(object)) {
-        throw new Error(objectName + " must be of type Array.");
+        throw new Error(`${objectName} must be of type Array.`);
     }
-    var elementType = mapper.type.element;
+    const elementType = mapper.type.element;
     if (!elementType || typeof elementType !== "object") {
-        throw new Error("element\" metadata for an Array must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName + "."));
+        throw new Error(`element" metadata for an Array must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}.`);
     }
-    var tempArray = [];
-    for (var i = 0; i < object.length; i++) {
-        var serializedValue = serializer.serialize(elementType, object[i], objectName, options);
+    const tempArray = [];
+    for (let i = 0; i < object.length; i++) {
+        const serializedValue = serializer.serialize(elementType, object[i], objectName, options);
         if (isXml && elementType.xmlNamespace) {
-            var xmlnsKey = elementType.xmlNamespacePrefix
-                ? "xmlns:" + elementType.xmlNamespacePrefix
+            const xmlnsKey = elementType.xmlNamespacePrefix
+                ? `xmlns:${elementType.xmlNamespacePrefix}`
                 : "xmlns";
             if (elementType.type.name === "Composite") {
-                tempArray[i] = tslib.__assign({}, serializedValue);
-                tempArray[i][XML_ATTRKEY] = (_a = {}, _a[xmlnsKey] = elementType.xmlNamespace, _a);
+                tempArray[i] = Object.assign({}, serializedValue);
+                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };
             }
             else {
                 tempArray[i] = {};
                 tempArray[i][options.xmlCharKey] = serializedValue;
-                tempArray[i][XML_ATTRKEY] = (_b = {}, _b[xmlnsKey] = elementType.xmlNamespace, _b);
+                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };
             }
         }
         else {
@@ -10950,27 +10039,25 @@ function serializeSequenceType(serializer, mapper, object, objectName, isXml, op
     return tempArray;
 }
 function serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {
-    var _a;
     if (typeof object !== "object") {
-        throw new Error(objectName + " must be of type object.");
+        throw new Error(`${objectName} must be of type object.`);
     }
-    var valueType = mapper.type.value;
+    const valueType = mapper.type.value;
     if (!valueType || typeof valueType !== "object") {
-        throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName + "."));
+        throw new Error(`"value" metadata for a Dictionary must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}.`);
     }
-    var tempDictionary = {};
-    for (var _i = 0, _b = Object.keys(object); _i < _b.length; _i++) {
-        var key = _b[_i];
-        var serializedValue = serializer.serialize(valueType, object[key], objectName, options);
+    const tempDictionary = {};
+    for (const key of Object.keys(object)) {
+        const serializedValue = serializer.serialize(valueType, object[key], objectName, options);
         // If the element needs an XML namespace we need to add it within the $ property
         tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);
     }
     // Add the namespace to the root element if needed
     if (isXml && mapper.xmlNamespace) {
-        var xmlnsKey = mapper.xmlNamespacePrefix ? "xmlns:" + mapper.xmlNamespacePrefix : "xmlns";
-        var result = tempDictionary;
-        result[XML_ATTRKEY] = (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a);
+        const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : "xmlns";
+        const result = tempDictionary;
+        result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };
         return result;
     }
     return tempDictionary;
@@ -10982,9 +10069,9 @@ function serializeDictionaryType(serializer, mapper, object, objectName, isXml,
  * @param objectName - Name of the object being serialized
  */
 function resolveAdditionalProperties(serializer, mapper, objectName) {
-    var additionalProperties = mapper.type.additionalProperties;
+    const additionalProperties = mapper.type.additionalProperties;
     if (!additionalProperties && mapper.type.className) {
-        var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
+        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
         return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;
     }
     return additionalProperties;
@@ -10996,9 +10083,9 @@ function resolveAdditionalProperties(serializer, mapper, objectName) {
  * @param objectName - Name of the object being serialized
  */
 function resolveReferencedMapper(serializer, mapper, objectName) {
-    var className = mapper.type.className;
+    const className = mapper.type.className;
     if (!className) {
-        throw new Error("Class name for model \"" + objectName + "\" is not provided in the mapper \"" + JSON.stringify(mapper, undefined, 2) + "\".");
+        throw new Error(`Class name for model "${objectName}" is not provided in the mapper "${JSON.stringify(mapper, undefined, 2)}".`);
     }
     return serializer.modelMappers[className];
 }
@@ -11008,36 +10095,34 @@ function resolveReferencedMapper(serializer, mapper, objectName) {
  * @param mapper - The composite mapper to resolve
  */
 function resolveModelProperties(serializer, mapper, objectName) {
-    var modelProps = mapper.type.modelProperties;
+    let modelProps = mapper.type.modelProperties;
     if (!modelProps) {
-        var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
+        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
         if (!modelMapper) {
-            throw new Error("mapper() cannot be null or undefined for model \"" + mapper.type.className + "\".");
+            throw new Error(`mapper() cannot be null or undefined for model "${mapper.type.className}".`);
         }
         modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;
         if (!modelProps) {
-            throw new Error("modelProperties cannot be null or undefined in the " +
-                ("mapper \"" + JSON.stringify(modelMapper) + "\" of type \"" + mapper.type.className + "\" for object \"" + objectName + "\"."));
+            throw new Error(`modelProperties cannot be null or undefined in the ` +
+                `mapper "${JSON.stringify(modelMapper)}" of type "${mapper.type.className}" for object "${objectName}".`);
         }
     }
     return modelProps;
 }
 function serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {
-    var _a, _b;
     if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
         mapper = getPolymorphicMapper(serializer, mapper, object, "clientName");
     }
     if (object != undefined) {
-        var payload = {};
-        var modelProps = resolveModelProperties(serializer, mapper, objectName);
-        for (var _i = 0, _c = Object.keys(modelProps); _i < _c.length; _i++) {
-            var key = _c[_i];
-            var propertyMapper = modelProps[key];
+        const payload = {};
+        const modelProps = resolveModelProperties(serializer, mapper, objectName);
+        for (const key of Object.keys(modelProps)) {
+            const propertyMapper = modelProps[key];
             if (propertyMapper.readOnly) {
                 continue;
             }
-            var propName = void 0;
-            var parentObject = payload;
+            let propName;
+            let parentObject = payload;
             if (serializer.isXML) {
                 if (propertyMapper.xmlIsWrapped) {
                     propName = propertyMapper.xmlName;
@@ -11047,11 +10132,10 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
                 }
             }
             else {
-                var paths = splitSerializeName(propertyMapper.serializedName);
+                const paths = splitSerializeName(propertyMapper.serializedName);
                 propName = paths.pop();
-                for (var _d = 0, paths_1 = paths; _d < paths_1.length; _d++) {
-                    var pathName = paths_1[_d];
-                    var childObject = parentObject[pathName];
+                for (const pathName of paths) {
+                    const childObject = parentObject[pathName];
                     if (childObject == undefined &&
                         (object[key] != undefined || propertyMapper.defaultValue !== undefined)) {
                         parentObject[pathName] = {};
@@ -11061,24 +10145,24 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
             }
             if (parentObject != undefined) {
                 if (isXml && mapper.xmlNamespace) {
-                    var xmlnsKey = mapper.xmlNamespacePrefix
-                        ? "xmlns:" + mapper.xmlNamespacePrefix
+                    const xmlnsKey = mapper.xmlNamespacePrefix
+                        ? `xmlns:${mapper.xmlNamespacePrefix}`
                         : "xmlns";
-                    parentObject[XML_ATTRKEY] = tslib.__assign(tslib.__assign({}, parentObject[XML_ATTRKEY]), (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a));
+                    parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace });
                 }
-                var propertyObjectName = propertyMapper.serializedName !== ""
+                const propertyObjectName = propertyMapper.serializedName !== ""
                     ? objectName + "." + propertyMapper.serializedName
                     : objectName;
-                var toSerialize = object[key];
-                var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
+                let toSerialize = object[key];
+                const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
                 if (polymorphicDiscriminator &&
                     polymorphicDiscriminator.clientName === key &&
                     toSerialize == undefined) {
                     toSerialize = mapper.serializedName;
                 }
-                var serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);
+                const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);
                 if (serializedValue !== undefined && propName != undefined) {
-                    var value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);
+                    const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);
                     if (isXml && propertyMapper.xmlIsAttribute) {
                         // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.
                         // This keeps things simple while preventing name collision
@@ -11087,7 +10171,7 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
                         parentObject[XML_ATTRKEY][propName] = serializedValue;
                     }
                     else if (isXml && propertyMapper.xmlIsWrapped) {
-                        parentObject[propName] = (_b = {}, _b[propertyMapper.xmlElementName] = value, _b);
+                        parentObject[propName] = { [propertyMapper.xmlElementName]: value };
                     }
                     else {
                         parentObject[propName] = value;
@@ -11095,17 +10179,14 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
                 }
             }
         }
-        var additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);
+        const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);
         if (additionalPropertiesMapper) {
-            var propNames = Object.keys(modelProps);
-            var _loop_1 = function (clientPropName) {
-                var isAdditionalProperty = propNames.every(function (pn) { return pn !== clientPropName; });
+            const propNames = Object.keys(modelProps);
+            for (const clientPropName in object) {
+                const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);
                 if (isAdditionalProperty) {
                     payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]', options);
                 }
-            };
-            for (var clientPropName in object) {
-                _loop_1(clientPropName);
             }
         }
         return payload;
@@ -11113,25 +10194,24 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
     return object;
 }
 function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {
-    var _a;
     if (!isXml || !propertyMapper.xmlNamespace) {
         return serializedValue;
     }
-    var xmlnsKey = propertyMapper.xmlNamespacePrefix
-        ? "xmlns:" + propertyMapper.xmlNamespacePrefix
+    const xmlnsKey = propertyMapper.xmlNamespacePrefix
+        ? `xmlns:${propertyMapper.xmlNamespacePrefix}`
         : "xmlns";
-    var xmlNamespace = (_a = {}, _a[xmlnsKey] = propertyMapper.xmlNamespace, _a);
+    const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };
     if (["Composite"].includes(propertyMapper.type.name)) {
         if (serializedValue[XML_ATTRKEY]) {
             return serializedValue;
         }
         else {
-            var result_1 = tslib.__assign({}, serializedValue);
-            result_1[XML_ATTRKEY] = xmlNamespace;
-            return result_1;
+            const result = Object.assign({}, serializedValue);
+            result[XML_ATTRKEY] = xmlNamespace;
+            return result;
         }
     }
-    var result = {};
+    const result = {};
     result[options.xmlCharKey] = serializedValue;
     result[XML_ATTRKEY] = xmlNamespace;
     return result;
@@ -11144,24 +10224,22 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
     if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
         mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName");
     }
-    var modelProps = resolveModelProperties(serializer, mapper, objectName);
-    var instance = {};
-    var handledPropertyNames = [];
-    for (var _i = 0, _b = Object.keys(modelProps); _i < _b.length; _i++) {
-        var key = _b[_i];
-        var propertyMapper = modelProps[key];
-        var paths = splitSerializeName(modelProps[key].serializedName);
+    const modelProps = resolveModelProperties(serializer, mapper, objectName);
+    let instance = {};
+    const handledPropertyNames = [];
+    for (const key of Object.keys(modelProps)) {
+        const propertyMapper = modelProps[key];
+        const paths = splitSerializeName(modelProps[key].serializedName);
         handledPropertyNames.push(paths[0]);
-        var serializedName = propertyMapper.serializedName, xmlName = propertyMapper.xmlName, xmlElementName = propertyMapper.xmlElementName;
-        var propertyObjectName = objectName;
+        const { serializedName, xmlName, xmlElementName } = propertyMapper;
+        let propertyObjectName = objectName;
         if (serializedName !== "" && serializedName !== undefined) {
             propertyObjectName = objectName + "." + serializedName;
         }
-        var headerCollectionPrefix = propertyMapper.headerCollectionPrefix;
+        const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;
         if (headerCollectionPrefix) {
-            var dictionary = {};
-            for (var _c = 0, _d = Object.keys(responseBody); _c < _d.length; _c++) {
-                var headerKey = _d[_c];
+            const dictionary = {};
+            for (const headerKey of Object.keys(responseBody)) {
                 if (headerKey.startsWith(headerCollectionPrefix)) {
                     dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);
                 }
@@ -11174,7 +10252,7 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
                 instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);
             }
             else {
-                var propertyName = xmlElementName || xmlName || serializedName;
+                const propertyName = xmlElementName || xmlName || serializedName;
                 if (propertyMapper.xmlIsWrapped) {
                     /* a list of <xmlElementName> wrapped by <xmlName>
                       For the xml example below
@@ -11190,29 +10268,28 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
                         }
                       xmlName is "Cors" and xmlElementName is"CorsRule".
                     */
-                    var wrapped = responseBody[xmlName];
-                    var elementList = (_a = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _a !== void 0 ? _a : [];
+                    const wrapped = responseBody[xmlName];
+                    const elementList = (_a = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _a !== void 0 ? _a : [];
                     instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);
                 }
                 else {
-                    var property = responseBody[propertyName];
+                    const property = responseBody[propertyName];
                     instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);
                 }
             }
         }
         else {
             // deserialize the property if it is present in the provided responseBody instance
-            var propertyInstance = void 0;
-            var res = responseBody;
+            let propertyInstance;
+            let res = responseBody;
             // traversing the object step by step.
-            for (var _e = 0, paths_2 = paths; _e < paths_2.length; _e++) {
-                var item = paths_2[_e];
+            for (const item of paths) {
                 if (!res)
                     break;
                 res = res[item];
             }
             propertyInstance = res;
-            var polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;
+            const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;
             // checking that the model property name (key)(ex: "fishtype") and the
             // clientName of the polymorphicDiscriminator {metadata} (ex: "fishtype")
             // instead of the serializedName of the polymorphicDiscriminator (ex: "fish.type")
@@ -11227,15 +10304,14 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
                 propertyInstance == undefined) {
                 propertyInstance = mapper.serializedName;
             }
-            var serializedValue = void 0;
+            let serializedValue;
             // paging
             if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === "") {
                 propertyInstance = responseBody[key];
-                var arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
+                const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
                 // Copy over any properties that have already been added into the instance, where they do
                 // not exist on the newly de-serialized array
-                for (var _f = 0, _g = Object.entries(instance); _f < _g.length; _f++) {
-                    var _h = _g[_f], k = _h[0], v = _h[1];
+                for (const [k, v] of Object.entries(instance)) {
                     if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {
                         arrayInstance[k] = v;
                     }
@@ -11248,26 +10324,25 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
             }
         }
     }
-    var additionalPropertiesMapper = mapper.type.additionalProperties;
+    const additionalPropertiesMapper = mapper.type.additionalProperties;
     if (additionalPropertiesMapper) {
-        var isAdditionalProperty = function (responsePropName) {
-            for (var clientPropName in modelProps) {
-                var paths = splitSerializeName(modelProps[clientPropName].serializedName);
+        const isAdditionalProperty = (responsePropName) => {
+            for (const clientPropName in modelProps) {
+                const paths = splitSerializeName(modelProps[clientPropName].serializedName);
                 if (paths[0] === responsePropName) {
                     return false;
                 }
             }
             return true;
         };
-        for (var responsePropName in responseBody) {
+        for (const responsePropName in responseBody) {
             if (isAdditionalProperty(responsePropName)) {
                 instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]', options);
             }
         }
     }
     else if (responseBody) {
-        for (var _j = 0, _k = Object.keys(responseBody); _j < _k.length; _j++) {
-            var key = _k[_j];
+        for (const key of Object.keys(responseBody)) {
             if (instance[key] === undefined &&
                 !handledPropertyNames.includes(key) &&
                 !isSpecialXmlProperty(key, options)) {
@@ -11278,15 +10353,14 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
     return instance;
 }
 function deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {
-    var value = mapper.type.value;
+    const value = mapper.type.value;
     if (!value || typeof value !== "object") {
-        throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName));
+        throw new Error(`"value" metadata for a Dictionary must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}`);
     }
     if (responseBody) {
-        var tempDictionary = {};
-        for (var _i = 0, _a = Object.keys(responseBody); _i < _a.length; _i++) {
-            var key = _a[_i];
+        const tempDictionary = {};
+        for (const key of Object.keys(responseBody)) {
             tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);
         }
         return tempDictionary;
@@ -11294,36 +10368,36 @@ function deserializeDictionaryType(serializer, mapper, responseBody, objectName,
     return responseBody;
 }
 function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {
-    var element = mapper.type.element;
+    const element = mapper.type.element;
     if (!element || typeof element !== "object") {
-        throw new Error("element\" metadata for an Array must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName));
+        throw new Error(`element" metadata for an Array must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}`);
     }
     if (responseBody) {
         if (!Array.isArray(responseBody)) {
             // xml2js will interpret a single element array as just the element, so force it to be an array
             responseBody = [responseBody];
         }
-        var tempArray = [];
-        for (var i = 0; i < responseBody.length; i++) {
-            tempArray[i] = serializer.deserialize(element, responseBody[i], objectName + "[" + i + "]", options);
+        const tempArray = [];
+        for (let i = 0; i < responseBody.length; i++) {
+            tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);
         }
         return tempArray;
     }
     return responseBody;
 }
 function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {
-    var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
+    const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
     if (polymorphicDiscriminator) {
-        var discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
+        const discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
         if (discriminatorName != undefined) {
-            var discriminatorValue = object[discriminatorName];
+            const discriminatorValue = object[discriminatorName];
             if (discriminatorValue != undefined) {
-                var typeName = mapper.type.uberParent || mapper.type.className;
-                var indexDiscriminator = discriminatorValue === typeName
+                const typeName = mapper.type.uberParent || mapper.type.className;
+                const indexDiscriminator = discriminatorValue === typeName
                     ? discriminatorValue
                     : typeName + "." + discriminatorValue;
-                var polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
+                const polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
                 if (polymorphicMapper) {
                     mapper = polymorphicMapper;
                 }
@@ -11344,7 +10418,7 @@ function getPolymorphicDiscriminatorSafely(serializer, typeName) {
 }
 // TODO: why is this here?
 function serializeObject(toSerialize) {
-    var castToSerialize = toSerialize;
+    const castToSerialize = toSerialize;
     if (toSerialize == undefined)
         return undefined;
     if (toSerialize instanceof Uint8Array) {
@@ -11355,15 +10429,15 @@ function serializeObject(toSerialize) {
         return toSerialize.toISOString();
     }
     else if (Array.isArray(toSerialize)) {
-        var array = [];
-        for (var i = 0; i < toSerialize.length; i++) {
+        const array = [];
+        for (let i = 0; i < toSerialize.length; i++) {
             array.push(serializeObject(toSerialize[i]));
         }
         return array;
     }
     else if (typeof toSerialize === "object") {
-        var dictionary = {};
-        for (var property in toSerialize) {
+        const dictionary = {};
+        for (const property in toSerialize) {
             dictionary[property] = serializeObject(castToSerialize[property]);
         }
         return dictionary;
@@ -11374,15 +10448,14 @@ function serializeObject(toSerialize) {
  * Utility function to create a K:V from a list of strings
  */
 function strEnum(o) {
-    var result = {};
-    for (var _i = 0, o_1 = o; _i < o_1.length; _i++) {
-        var key = o_1[_i];
+    const result = {};
+    for (const key of o) {
         result[key] = key;
     }
     return result;
 }
 // eslint-disable-next-line @typescript-eslint/no-redeclare
-var MapperType = strEnum([
+const MapperType = strEnum([
     "Base64Url",
     "Boolean",
     "ByteArray",
@@ -11404,7 +10477,7 @@ var MapperType = strEnum([
 // Copyright (c) Microsoft Corporation.
 function isWebResourceLike(object) {
     if (object && typeof object === "object") {
-        var castObject = object;
+        const castObject = object;
         if (typeof castObject.url === "string" &&
             typeof castObject.method === "string" &&
             typeof castObject.headers === "object" &&
@@ -11423,8 +10496,8 @@ function isWebResourceLike(object) {
  * This class provides an abstraction over a REST call by being library / implementation agnostic and wrapping the necessary
  * properties to initiate a request.
  */
-var WebResource = /** @class */ (function () {
-    function WebResource(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse, streamResponseStatusCodes) {
+class WebResource {
+    constructor(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse, streamResponseStatusCodes) {
         this.streamResponseBody = streamResponseBody;
         this.streamResponseStatusCodes = streamResponseStatusCodes;
         this.url = url || "";
@@ -11448,20 +10521,20 @@ var WebResource = /** @class */ (function () {
      * headers["accept-language"] are defined. It will throw an error if one of the above
      * mentioned properties are not defined.
      */
-    WebResource.prototype.validateRequestProperties = function () {
+    validateRequestProperties() {
         if (!this.method) {
             throw new Error("WebResource.method is required.");
         }
         if (!this.url) {
             throw new Error("WebResource.url is required.");
         }
-    };
+    }
     /**
      * Prepares the request.
      * @param options - Options to provide for preparing the request.
      * @returns Returns the prepared WebResource (HTTP Request) object that needs to be given to the request pipeline.
      */
-    WebResource.prototype.prepare = function (options) {
+    prepare(options) {
         if (!options) {
             throw new Error("options object is required");
         }
@@ -11490,7 +10563,7 @@ var WebResource = /** @class */ (function () {
         }
         // set the method
         if (options.method) {
-            var validMethods = ["GET", "PUT", "HEAD", "DELETE", "OPTIONS", "POST", "PATCH", "TRACE"];
+            const validMethods = ["GET", "PUT", "HEAD", "DELETE", "OPTIONS", "POST", "PATCH", "TRACE"];
             if (validMethods.indexOf(options.method.toUpperCase()) === -1) {
                 throw new Error('The provided method "' +
                     options.method +
@@ -11501,70 +10574,70 @@ var WebResource = /** @class */ (function () {
         this.method = options.method.toUpperCase();
         // construct the url if path template is provided
         if (options.pathTemplate) {
-            var pathTemplate_1 = options.pathTemplate, pathParameters_1 = options.pathParameters;
-            if (typeof pathTemplate_1 !== "string") {
+            const { pathTemplate, pathParameters } = options;
+            if (typeof pathTemplate !== "string") {
                 throw new Error('options.pathTemplate must be of type "string".');
             }
             if (!options.baseUrl) {
                 options.baseUrl = "https://management.azure.com";
             }
-            var baseUrl = options.baseUrl;
-            var url_1 = baseUrl +
+            const baseUrl = options.baseUrl;
+            let url = baseUrl +
                 (baseUrl.endsWith("/") ? "" : "/") +
-                (pathTemplate_1.startsWith("/") ? pathTemplate_1.slice(1) : pathTemplate_1);
-            var segments = url_1.match(/({[\w-]*\s*[\w-]*})/gi);
+                (pathTemplate.startsWith("/") ? pathTemplate.slice(1) : pathTemplate);
+            const segments = url.match(/({[\w-]*\s*[\w-]*})/gi);
             if (segments && segments.length) {
-                if (!pathParameters_1) {
-                    throw new Error("pathTemplate: " + pathTemplate_1 + " has been provided. Hence, options.pathParameters must also be provided.");
+                if (!pathParameters) {
+                    throw new Error(`pathTemplate: ${pathTemplate} has been provided. Hence, options.pathParameters must also be provided.`);
                 }
                 segments.forEach(function (item) {
-                    var pathParamName = item.slice(1, -1);
-                    var pathParam = pathParameters_1[pathParamName];
+                    const pathParamName = item.slice(1, -1);
+                    const pathParam = pathParameters[pathParamName];
                     if (pathParam === null ||
                         pathParam === undefined ||
                         !(typeof pathParam === "string" || typeof pathParam === "object")) {
-                        var stringifiedPathParameters = JSON.stringify(pathParameters_1, undefined, 2);
-                        throw new Error("pathTemplate: " + pathTemplate_1 + " contains the path parameter " + pathParamName +
-                            (" however, it is not present in parameters: " + stringifiedPathParameters + ".") +
-                            ("The value of the path parameter can either be a \"string\" of the form { " + pathParamName + ": \"some sample value\" } or ") +
-                            ("it can be an \"object\" of the form { \"" + pathParamName + "\": { value: \"some sample value\", skipUrlEncoding: true } }."));
+                        const stringifiedPathParameters = JSON.stringify(pathParameters, undefined, 2);
+                        throw new Error(`pathTemplate: ${pathTemplate} contains the path parameter ${pathParamName}` +
+                            ` however, it is not present in parameters: ${stringifiedPathParameters}.` +
+                            `The value of the path parameter can either be a "string" of the form { ${pathParamName}: "some sample value" } or ` +
+                            `it can be an "object" of the form { "${pathParamName}": { value: "some sample value", skipUrlEncoding: true } }.`);
                     }
                     if (typeof pathParam.valueOf() === "string") {
-                        url_1 = url_1.replace(item, encodeURIComponent(pathParam));
+                        url = url.replace(item, encodeURIComponent(pathParam));
                     }
                     if (typeof pathParam.valueOf() === "object") {
                         if (!pathParam.value) {
-                            throw new Error("options.pathParameters[" + pathParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
+                            throw new Error(`options.pathParameters[${pathParamName}] is of type "object" but it does not contain a "value" property.`);
                         }
                         if (pathParam.skipUrlEncoding) {
-                            url_1 = url_1.replace(item, pathParam.value);
+                            url = url.replace(item, pathParam.value);
                         }
                         else {
-                            url_1 = url_1.replace(item, encodeURIComponent(pathParam.value));
+                            url = url.replace(item, encodeURIComponent(pathParam.value));
                         }
                     }
                 });
             }
-            this.url = url_1;
+            this.url = url;
         }
         // append query parameters to the url if they are provided. They can be provided with pathTemplate or url option.
         if (options.queryParameters) {
-            var queryParameters = options.queryParameters;
+            const queryParameters = options.queryParameters;
             if (typeof queryParameters !== "object") {
-                throw new Error("options.queryParameters must be of type object. It should be a JSON object " +
-                    "of \"query-parameter-name\" as the key and the \"query-parameter-value\" as the value. " +
-                    "The \"query-parameter-value\" may be fo type \"string\" or an \"object\" of the form { value: \"query-parameter-value\", skipUrlEncoding: true }.");
+                throw new Error(`options.queryParameters must be of type object. It should be a JSON object ` +
+                    `of "query-parameter-name" as the key and the "query-parameter-value" as the value. ` +
+                    `The "query-parameter-value" may be fo type "string" or an "object" of the form { value: "query-parameter-value", skipUrlEncoding: true }.`);
             }
             // append question mark if it is not present in the url
             if (this.url && this.url.indexOf("?") === -1) {
                 this.url += "?";
             }
             // construct queryString
-            var queryParams = [];
+            const queryParams = [];
             // We need to populate this.query as a dictionary if the request is being used for Sway's validateRequest().
             this.query = {};
-            for (var queryParamName in queryParameters) {
-                var queryParam = queryParameters[queryParamName];
+            for (const queryParamName in queryParameters) {
+                const queryParam = queryParameters[queryParamName];
                 if (queryParam) {
                     if (typeof queryParam === "string") {
                         queryParams.push(queryParamName + "=" + encodeURIComponent(queryParam));
@@ -11572,7 +10645,7 @@ var WebResource = /** @class */ (function () {
                     }
                     else if (typeof queryParam === "object") {
                         if (!queryParam.value) {
-                            throw new Error("options.queryParameters[" + queryParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
+                            throw new Error(`options.queryParameters[${queryParamName}] is of type "object" but it does not contain a "value" property.`);
                         }
                         if (queryParam.skipUrlEncoding) {
                             queryParams.push(queryParamName + "=" + queryParam.value);
@@ -11590,9 +10663,8 @@ var WebResource = /** @class */ (function () {
         }
         // add headers to the request if they are provided
         if (options.headers) {
-            var headers = options.headers;
-            for (var _i = 0, _a = Object.keys(options.headers); _i < _a.length; _i++) {
-                var headerName = _a[_i];
+            const headers = options.headers;
+            for (const headerName of Object.keys(options.headers)) {
                 this.headers.set(headerName, headers[headerName]);
             }
         }
@@ -11639,13 +10711,13 @@ var WebResource = /** @class */ (function () {
         this.onDownloadProgress = options.onDownloadProgress;
         this.onUploadProgress = options.onUploadProgress;
         return this;
-    };
+    }
     /**
      * Clone this WebResource HTTP request object.
      * @returns The clone of this WebResource HTTP request object.
      */
-    WebResource.prototype.clone = function () {
-        var result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse, this.streamResponseStatusCodes);
+    clone() {
+        const result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse, this.streamResponseStatusCodes);
         if (this.formData) {
             result.formData = this.formData;
         }
@@ -11659,43 +10731,42 @@ var WebResource = /** @class */ (function () {
             result.operationResponseGetter = this.operationResponseGetter;
         }
         return result;
-    };
-    return WebResource;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var custom = util.inspect.custom;
+const custom = util.inspect.custom;
 
 // Copyright (c) Microsoft Corporation.
 /**
  * A class that handles the query portion of a URLBuilder.
  */
-var URLQuery = /** @class */ (function () {
-    function URLQuery() {
+class URLQuery {
+    constructor() {
         this._rawQuery = {};
     }
     /**
      * Get whether or not there any query parameters in this URLQuery.
      */
-    URLQuery.prototype.any = function () {
+    any() {
         return Object.keys(this._rawQuery).length > 0;
-    };
+    }
     /**
      * Get the keys of the query string.
      */
-    URLQuery.prototype.keys = function () {
+    keys() {
         return Object.keys(this._rawQuery);
-    };
+    }
     /**
      * Set a query parameter with the provided name and value. If the parameterValue is undefined or
      * empty, then this will attempt to remove an existing query parameter with the provided
      * parameterName.
      */
-    URLQuery.prototype.set = function (parameterName, parameterValue) {
-        var caseParameterValue = parameterValue;
+    set(parameterName, parameterValue) {
+        const caseParameterValue = parameterValue;
         if (parameterName) {
             if (caseParameterValue !== undefined && caseParameterValue !== null) {
-                var newValue = Array.isArray(caseParameterValue)
+                const newValue = Array.isArray(caseParameterValue)
                     ? caseParameterValue
                     : caseParameterValue.toString();
                 this._rawQuery[parameterName] = newValue;
@@ -11704,52 +10775,51 @@ var URLQuery = /** @class */ (function () {
                 delete this._rawQuery[parameterName];
             }
         }
-    };
+    }
     /**
      * Get the value of the query parameter with the provided name. If no parameter exists with the
      * provided parameter name, then undefined will be returned.
      */
-    URLQuery.prototype.get = function (parameterName) {
+    get(parameterName) {
         return parameterName ? this._rawQuery[parameterName] : undefined;
-    };
+    }
     /**
      * Get the string representation of this query. The return value will not start with a "?".
      */
-    URLQuery.prototype.toString = function () {
-        var result = "";
-        for (var parameterName in this._rawQuery) {
+    toString() {
+        let result = "";
+        for (const parameterName in this._rawQuery) {
             if (result) {
                 result += "&";
             }
-            var parameterValue = this._rawQuery[parameterName];
+            const parameterValue = this._rawQuery[parameterName];
             if (Array.isArray(parameterValue)) {
-                var parameterStrings = [];
-                for (var _i = 0, parameterValue_1 = parameterValue; _i < parameterValue_1.length; _i++) {
-                    var parameterValueElement = parameterValue_1[_i];
-                    parameterStrings.push(parameterName + "=" + parameterValueElement);
+                const parameterStrings = [];
+                for (const parameterValueElement of parameterValue) {
+                    parameterStrings.push(`${parameterName}=${parameterValueElement}`);
                 }
                 result += parameterStrings.join("&");
             }
             else {
-                result += parameterName + "=" + parameterValue;
+                result += `${parameterName}=${parameterValue}`;
             }
         }
         return result;
-    };
+    }
     /**
      * Parse a URLQuery from the provided text.
      */
-    URLQuery.parse = function (text) {
-        var result = new URLQuery();
+    static parse(text) {
+        const result = new URLQuery();
         if (text) {
             if (text.startsWith("?")) {
                 text = text.substring(1);
             }
-            var currentState = "ParameterName";
-            var parameterName = "";
-            var parameterValue = "";
-            for (var i = 0; i < text.length; ++i) {
-                var currentCharacter = text[i];
+            let currentState = "ParameterName";
+            let parameterName = "";
+            let parameterValue = "";
+            for (let i = 0; i < text.length; ++i) {
+                const currentCharacter = text[i];
                 switch (currentState) {
                     case "ParameterName":
                         switch (currentCharacter) {
@@ -11787,81 +10857,78 @@ var URLQuery = /** @class */ (function () {
             }
         }
         return result;
-    };
-    return URLQuery;
-}());
+    }
+}
 /**
  * A class that handles creating, modifying, and parsing URLs.
  */
-var URLBuilder = /** @class */ (function () {
-    function URLBuilder() {
-    }
+class URLBuilder {
     /**
      * Set the scheme/protocol for this URL. If the provided scheme contains other parts of a URL
      * (such as a host, port, path, or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setScheme = function (scheme) {
+    setScheme(scheme) {
         if (!scheme) {
             this._scheme = undefined;
         }
         else {
             this.set(scheme, "SCHEME");
         }
-    };
+    }
     /**
      * Get the scheme that has been set in this URL.
      */
-    URLBuilder.prototype.getScheme = function () {
+    getScheme() {
         return this._scheme;
-    };
+    }
     /**
      * Set the host for this URL. If the provided host contains other parts of a URL (such as a
      * port, path, or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setHost = function (host) {
+    setHost(host) {
         if (!host) {
             this._host = undefined;
         }
         else {
             this.set(host, "SCHEME_OR_HOST");
         }
-    };
+    }
     /**
      * Get the host that has been set in this URL.
      */
-    URLBuilder.prototype.getHost = function () {
+    getHost() {
         return this._host;
-    };
+    }
     /**
      * Set the port for this URL. If the provided port contains other parts of a URL (such as a
      * path or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setPort = function (port) {
+    setPort(port) {
         if (port === undefined || port === null || port === "") {
             this._port = undefined;
         }
         else {
             this.set(port.toString(), "PORT");
         }
-    };
+    }
     /**
      * Get the port that has been set in this URL.
      */
-    URLBuilder.prototype.getPort = function () {
+    getPort() {
         return this._port;
-    };
+    }
     /**
      * Set the path for this URL. If the provided path contains a query, then it will be added to
      * this URL as well.
      */
-    URLBuilder.prototype.setPath = function (path) {
+    setPath(path) {
         if (!path) {
             this._path = undefined;
         }
         else {
-            var schemeIndex = path.indexOf("://");
+            const schemeIndex = path.indexOf("://");
             if (schemeIndex !== -1) {
-                var schemeStart = path.lastIndexOf("/", schemeIndex);
+                const schemeStart = path.lastIndexOf("/", schemeIndex);
                 // Make sure to only grab the URL part of the path before setting the state back to SCHEME
                 // this will handle cases such as "/a/b/c/https://microsoft.com" => "https://microsoft.com"
                 this.set(schemeStart === -1 ? path : path.substr(schemeStart + 1), "SCHEME");
@@ -11870,14 +10937,14 @@ var URLBuilder = /** @class */ (function () {
                 this.set(path, "PATH");
             }
         }
-    };
+    }
     /**
      * Append the provided path to this URL's existing path. If the provided path contains a query,
      * then it will be added to this URL as well.
      */
-    URLBuilder.prototype.appendPath = function (path) {
+    appendPath(path) {
         if (path) {
-            var currentPath = this.getPath();
+            let currentPath = this.getPath();
             if (currentPath) {
                 if (!currentPath.endsWith("/")) {
                     currentPath += "/";
@@ -11889,58 +10956,58 @@ var URLBuilder = /** @class */ (function () {
             }
             this.set(path, "PATH");
         }
-    };
+    }
     /**
      * Get the path that has been set in this URL.
      */
-    URLBuilder.prototype.getPath = function () {
+    getPath() {
         return this._path;
-    };
+    }
     /**
      * Set the query in this URL.
      */
-    URLBuilder.prototype.setQuery = function (query) {
+    setQuery(query) {
         if (!query) {
             this._query = undefined;
         }
         else {
             this._query = URLQuery.parse(query);
         }
-    };
+    }
     /**
      * Set a query parameter with the provided name and value in this URL's query. If the provided
      * query parameter value is undefined or empty, then the query parameter will be removed if it
      * existed.
      */
-    URLBuilder.prototype.setQueryParameter = function (queryParameterName, queryParameterValue) {
+    setQueryParameter(queryParameterName, queryParameterValue) {
         if (queryParameterName) {
             if (!this._query) {
                 this._query = new URLQuery();
             }
             this._query.set(queryParameterName, queryParameterValue);
         }
-    };
+    }
     /**
      * Get the value of the query parameter with the provided query parameter name. If no query
      * parameter exists with the provided name, then undefined will be returned.
      */
-    URLBuilder.prototype.getQueryParameterValue = function (queryParameterName) {
+    getQueryParameterValue(queryParameterName) {
         return this._query ? this._query.get(queryParameterName) : undefined;
-    };
+    }
     /**
      * Get the query in this URL.
      */
-    URLBuilder.prototype.getQuery = function () {
+    getQuery() {
         return this._query ? this._query.toString() : undefined;
-    };
+    }
     /**
      * Set the parts of this URL by parsing the provided text using the provided startState.
      */
-    URLBuilder.prototype.set = function (text, startState) {
-        var tokenizer = new URLTokenizer(text, startState);
+    set(text, startState) {
+        const tokenizer = new URLTokenizer(text, startState);
         while (tokenizer.next()) {
-            var token = tokenizer.current();
-            var tokenPath = void 0;
+            const token = tokenizer.current();
+            let tokenPath;
             if (token) {
                 switch (token.type) {
                     case "SCHEME":
@@ -11962,21 +11029,21 @@ var URLBuilder = /** @class */ (function () {
                         this._query = URLQuery.parse(token.text);
                         break;
                     default:
-                        throw new Error("Unrecognized URLTokenType: " + token.type);
+                        throw new Error(`Unrecognized URLTokenType: ${token.type}`);
                 }
             }
         }
-    };
-    URLBuilder.prototype.toString = function () {
-        var result = "";
+    }
+    toString() {
+        let result = "";
         if (this._scheme) {
-            result += this._scheme + "://";
+            result += `${this._scheme}://`;
         }
         if (this._host) {
             result += this._host;
         }
         if (this._port) {
-            result += ":" + this._port;
+            result += `:${this._port}`;
         }
         if (this._path) {
             if (!this._path.startsWith("/")) {
@@ -11985,15 +11052,15 @@ var URLBuilder = /** @class */ (function () {
             result += this._path;
         }
         if (this._query && this._query.any()) {
-            result += "?" + this._query.toString();
+            result += `?${this._query.toString()}`;
         }
         return result;
-    };
+    }
     /**
      * If the provided searchValue is found in this URLBuilder, then replace it with the provided
      * replaceValue.
      */
-    URLBuilder.prototype.replaceAll = function (searchValue, replaceValue) {
+    replaceAll(searchValue, replaceValue) {
         if (searchValue) {
             this.setScheme(replaceAll(this.getScheme(), searchValue, replaceValue));
             this.setHost(replaceAll(this.getHost(), searchValue, replaceValue));
@@ -12001,42 +11068,40 @@ var URLBuilder = /** @class */ (function () {
             this.setPath(replaceAll(this.getPath(), searchValue, replaceValue));
             this.setQuery(replaceAll(this.getQuery(), searchValue, replaceValue));
         }
-    };
-    URLBuilder.parse = function (text) {
-        var result = new URLBuilder();
+    }
+    static parse(text) {
+        const result = new URLBuilder();
         result.set(text, "SCHEME_OR_HOST");
         return result;
-    };
-    return URLBuilder;
-}());
-var URLToken = /** @class */ (function () {
-    function URLToken(text, type) {
+    }
+}
+class URLToken {
+    constructor(text, type) {
         this.text = text;
         this.type = type;
     }
-    URLToken.scheme = function (text) {
+    static scheme(text) {
         return new URLToken(text, "SCHEME");
-    };
-    URLToken.host = function (text) {
+    }
+    static host(text) {
         return new URLToken(text, "HOST");
-    };
-    URLToken.port = function (text) {
+    }
+    static port(text) {
         return new URLToken(text, "PORT");
-    };
-    URLToken.path = function (text) {
+    }
+    static path(text) {
         return new URLToken(text, "PATH");
-    };
-    URLToken.query = function (text) {
+    }
+    static query(text) {
         return new URLToken(text, "QUERY");
-    };
-    return URLToken;
-}());
+    }
+}
 /**
  * Get whether or not the provided character (single character string) is an alphanumeric (letter or
  * digit) character.
  */
 function isAlphaNumericCharacter(character) {
-    var characterCode = character.charCodeAt(0);
+    const characterCode = character.charCodeAt(0);
     return ((48 /* '0' */ <= characterCode && characterCode <= 57) /* '9' */ ||
         (65 /* 'A' */ <= characterCode && characterCode <= 90) /* 'Z' */ ||
         (97 /* 'a' */ <= characterCode && characterCode <= 122) /* 'z' */);
@@ -12044,8 +11109,8 @@ function isAlphaNumericCharacter(character) {
 /**
  * A class that tokenizes URL strings.
  */
-var URLTokenizer = /** @class */ (function () {
-    function URLTokenizer(_text, state) {
+class URLTokenizer {
+    constructor(_text, state) {
         this._text = _text;
         this._textLength = _text ? _text.length : 0;
         this._currentState = state !== undefined && state !== null ? state : "SCHEME_OR_HOST";
@@ -12055,13 +11120,13 @@ var URLTokenizer = /** @class */ (function () {
      * Get the current URLToken this URLTokenizer is pointing at, or undefined if the URLTokenizer
      * hasn't started or has finished tokenizing.
      */
-    URLTokenizer.prototype.current = function () {
+    current() {
         return this._currentToken;
-    };
+    }
     /**
      * Advance to the next URLToken and return whether or not a URLToken was found.
      */
-    URLTokenizer.prototype.next = function () {
+    next() {
         if (!hasCurrentCharacter(this)) {
             this._currentToken = undefined;
         }
@@ -12086,18 +11151,17 @@ var URLTokenizer = /** @class */ (function () {
                     nextQuery(this);
                     break;
                 default:
-                    throw new Error("Unrecognized URLTokenizerState: " + this._currentState);
+                    throw new Error(`Unrecognized URLTokenizerState: ${this._currentState}`);
             }
         }
         return !!this._currentToken;
-    };
-    return URLTokenizer;
-}());
+    }
+}
 /**
  * Read the remaining characters from this Tokenizer's character stream.
  */
 function readRemaining(tokenizer) {
-    var result = "";
+    let result = "";
     if (tokenizer._currentIndex < tokenizer._textLength) {
         result = tokenizer._text.substring(tokenizer._currentIndex);
         tokenizer._currentIndex = tokenizer._textLength;
@@ -12133,7 +11197,7 @@ function nextCharacter(tokenizer, step) {
  * Tokenizer's stream of characters.
  */
 function peekCharacters(tokenizer, charactersToPeek) {
-    var endIndex = tokenizer._currentIndex + charactersToPeek;
+    let endIndex = tokenizer._currentIndex + charactersToPeek;
     if (tokenizer._textLength < endIndex) {
         endIndex = tokenizer._textLength;
     }
@@ -12144,9 +11208,9 @@ function peekCharacters(tokenizer, charactersToPeek) {
  * is false when provided the current character.
  */
 function readWhile(tokenizer, condition) {
-    var result = "";
+    let result = "";
     while (hasCurrentCharacter(tokenizer)) {
-        var currentCharacter = getCurrentCharacter(tokenizer);
+        const currentCharacter = getCurrentCharacter(tokenizer);
         if (!condition(currentCharacter)) {
             break;
         }
@@ -12162,21 +11226,17 @@ function readWhile(tokenizer, condition) {
  * character stream is reached.
  */
 function readWhileLetterOrDigit(tokenizer) {
-    return readWhile(tokenizer, function (character) { return isAlphaNumericCharacter(character); });
+    return readWhile(tokenizer, (character) => isAlphaNumericCharacter(character));
 }
 /**
  * Read characters from this Tokenizer until one of the provided terminating characters is read or
  * the end of the character stream is reached.
  */
-function readUntilCharacter(tokenizer) {
-    var terminatingCharacters = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-        terminatingCharacters[_i - 1] = arguments[_i];
-    }
-    return readWhile(tokenizer, function (character) { return terminatingCharacters.indexOf(character) === -1; });
+function readUntilCharacter(tokenizer, ...terminatingCharacters) {
+    return readWhile(tokenizer, (character) => terminatingCharacters.indexOf(character) === -1);
 }
 function nextScheme(tokenizer) {
-    var scheme = readWhileLetterOrDigit(tokenizer);
+    const scheme = readWhileLetterOrDigit(tokenizer);
     tokenizer._currentToken = URLToken.scheme(scheme);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -12186,7 +11246,7 @@ function nextScheme(tokenizer) {
     }
 }
 function nextSchemeOrHost(tokenizer) {
-    var schemeOrHost = readUntilCharacter(tokenizer, ":", "/", "?");
+    const schemeOrHost = readUntilCharacter(tokenizer, ":", "/", "?");
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentToken = URLToken.host(schemeOrHost);
         tokenizer._currentState = "DONE";
@@ -12215,7 +11275,7 @@ function nextHost(tokenizer) {
     if (peekCharacters(tokenizer, 3) === "://") {
         nextCharacter(tokenizer, 3);
     }
-    var host = readUntilCharacter(tokenizer, ":", "/", "?");
+    const host = readUntilCharacter(tokenizer, ":", "/", "?");
     tokenizer._currentToken = URLToken.host(host);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -12234,7 +11294,7 @@ function nextPort(tokenizer) {
     if (getCurrentCharacter(tokenizer) === ":") {
         nextCharacter(tokenizer);
     }
-    var port = readUntilCharacter(tokenizer, "/", "?");
+    const port = readUntilCharacter(tokenizer, "/", "?");
     tokenizer._currentToken = URLToken.port(port);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -12247,7 +11307,7 @@ function nextPort(tokenizer) {
     }
 }
 function nextPath(tokenizer) {
-    var path = readUntilCharacter(tokenizer, "?");
+    const path = readUntilCharacter(tokenizer, "?");
     tokenizer._currentToken = URLToken.path(path);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -12260,14 +11320,14 @@ function nextQuery(tokenizer) {
     if (getCurrentCharacter(tokenizer) === "?") {
         nextCharacter(tokenizer);
     }
-    var query = readRemaining(tokenizer);
+    const query = readRemaining(tokenizer);
     tokenizer._currentToken = URLToken.query(query);
     tokenizer._currentState = "DONE";
 }
 
 // Copyright (c) Microsoft Corporation.
-var RedactedString = "REDACTED";
-var defaultAllowedHeaderNames = [
+const RedactedString = "REDACTED";
+const defaultAllowedHeaderNames = [
     "x-ms-client-request-id",
     "x-ms-return-client-request-id",
     "x-ms-useragent",
@@ -12307,35 +11367,33 @@ var defaultAllowedHeaderNames = [
     "Transfer-Encoding",
     "User-Agent"
 ];
-var defaultAllowedQueryParameters = ["api-version"];
-var Sanitizer = /** @class */ (function () {
-    function Sanitizer(_a) {
-        var _b = _a === void 0 ? {} : _a, _c = _b.allowedHeaderNames, allowedHeaderNames = _c === void 0 ? [] : _c, _d = _b.allowedQueryParameters, allowedQueryParameters = _d === void 0 ? [] : _d;
+const defaultAllowedQueryParameters = ["api-version"];
+class Sanitizer {
+    constructor({ allowedHeaderNames = [], allowedQueryParameters = [] } = {}) {
         allowedHeaderNames = Array.isArray(allowedHeaderNames)
             ? defaultAllowedHeaderNames.concat(allowedHeaderNames)
             : defaultAllowedHeaderNames;
         allowedQueryParameters = Array.isArray(allowedQueryParameters)
             ? defaultAllowedQueryParameters.concat(allowedQueryParameters)
             : defaultAllowedQueryParameters;
-        this.allowedHeaderNames = new Set(allowedHeaderNames.map(function (n) { return n.toLowerCase(); }));
-        this.allowedQueryParameters = new Set(allowedQueryParameters.map(function (p) { return p.toLowerCase(); }));
+        this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));
+        this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));
     }
-    Sanitizer.prototype.sanitize = function (obj) {
-        var _this = this;
-        var seen = new Set();
-        return JSON.stringify(obj, function (key, value) {
+    sanitize(obj) {
+        const seen = new Set();
+        return JSON.stringify(obj, (key, value) => {
             // Ensure Errors include their interesting non-enumerable members
             if (value instanceof Error) {
-                return tslib.__assign(tslib.__assign({}, value), { name: value.name, message: value.message });
+                return Object.assign(Object.assign({}, value), { name: value.name, message: value.message });
             }
             if (key === "_headersMap") {
-                return _this.sanitizeHeaders(value);
+                return this.sanitizeHeaders(value);
             }
             else if (key === "url") {
-                return _this.sanitizeUrl(value);
+                return this.sanitizeUrl(value);
             }
             else if (key === "query") {
-                return _this.sanitizeQuery(value);
+                return this.sanitizeQuery(value);
             }
             else if (key === "body") {
                 // Don't log the request body
@@ -12358,20 +11416,19 @@ var Sanitizer = /** @class */ (function () {
             }
             return value;
         }, 2);
-    };
-    Sanitizer.prototype.sanitizeHeaders = function (value) {
-        return this.sanitizeObject(value, this.allowedHeaderNames, function (v, k) { return v[k].value; });
-    };
-    Sanitizer.prototype.sanitizeQuery = function (value) {
-        return this.sanitizeObject(value, this.allowedQueryParameters, function (v, k) { return v[k]; });
-    };
-    Sanitizer.prototype.sanitizeObject = function (value, allowedKeys, accessor) {
+    }
+    sanitizeHeaders(value) {
+        return this.sanitizeObject(value, this.allowedHeaderNames, (v, k) => v[k].value);
+    }
+    sanitizeQuery(value) {
+        return this.sanitizeObject(value, this.allowedQueryParameters, (v, k) => v[k]);
+    }
+    sanitizeObject(value, allowedKeys, accessor) {
         if (typeof value !== "object" || value === null) {
             return value;
         }
-        var sanitized = {};
-        for (var _i = 0, _a = Object.keys(value); _i < _a.length; _i++) {
-            var k = _a[_i];
+        const sanitized = {};
+        for (const k of Object.keys(value)) {
             if (allowedKeys.has(k.toLowerCase())) {
                 sanitized[k] = accessor(value, k);
             }
@@ -12380,267 +11437,230 @@ var Sanitizer = /** @class */ (function () {
             }
         }
         return sanitized;
-    };
-    Sanitizer.prototype.sanitizeUrl = function (value) {
+    }
+    sanitizeUrl(value) {
         if (typeof value !== "string" || value === null) {
             return value;
         }
-        var urlBuilder = URLBuilder.parse(value);
-        var queryString = urlBuilder.getQuery();
+        const urlBuilder = URLBuilder.parse(value);
+        const queryString = urlBuilder.getQuery();
         if (!queryString) {
             return value;
         }
-        var query = URLQuery.parse(queryString);
-        for (var _i = 0, _a = query.keys(); _i < _a.length; _i++) {
-            var k = _a[_i];
+        const query = URLQuery.parse(queryString);
+        for (const k of query.keys()) {
             if (!this.allowedQueryParameters.has(k.toLowerCase())) {
                 query.set(k, RedactedString);
             }
         }
         urlBuilder.setQuery(query.toString());
         return urlBuilder.toString();
-    };
-    return Sanitizer;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var errorSanitizer = new Sanitizer();
-var RestError = /** @class */ (function (_super) {
-    tslib.__extends(RestError, _super);
-    function RestError(message, code, statusCode, request, response) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "RestError";
-        _this.code = code;
-        _this.statusCode = statusCode;
-        _this.request = request;
-        _this.response = response;
-        Object.setPrototypeOf(_this, RestError.prototype);
-        return _this;
+const errorSanitizer = new Sanitizer();
+class RestError extends Error {
+    constructor(message, code, statusCode, request, response) {
+        super(message);
+        this.name = "RestError";
+        this.code = code;
+        this.statusCode = statusCode;
+        this.request = request;
+        this.response = response;
+        Object.setPrototypeOf(this, RestError.prototype);
     }
     /**
      * Logging method for util.inspect in Node
      */
-    RestError.prototype[custom] = function () {
-        return "RestError: " + this.message + " \n " + errorSanitizer.sanitize(this);
-    };
-    RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR";
-    RestError.PARSE_ERROR = "PARSE_ERROR";
-    return RestError;
-}(Error));
-
-// Copyright (c) Microsoft Corporation.
-var logger = logger$1.createClientLogger("core-http");
-
-// Copyright (c) Microsoft Corporation.
-var ReportTransform = /** @class */ (function (_super) {
-    tslib.__extends(ReportTransform, _super);
-    function ReportTransform(progressCallback) {
-        var _this = _super.call(this) || this;
-        _this.progressCallback = progressCallback;
-        _this.loadedBytes = 0;
-        return _this;
+    [custom]() {
+        return `RestError: ${this.message} \n ${errorSanitizer.sanitize(this)}`;
     }
-    ReportTransform.prototype._transform = function (chunk, _encoding, callback) {
+}
+RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR";
+RestError.PARSE_ERROR = "PARSE_ERROR";
+
+// Copyright (c) Microsoft Corporation.
+const logger = logger$1.createClientLogger("core-http");
+
+// Copyright (c) Microsoft Corporation.
+class ReportTransform extends stream.Transform {
+    constructor(progressCallback) {
+        super();
+        this.progressCallback = progressCallback;
+        this.loadedBytes = 0;
+    }
+    _transform(chunk, _encoding, callback) {
         this.push(chunk);
         this.loadedBytes += chunk.length;
         this.progressCallback({ loadedBytes: this.loadedBytes });
         callback(undefined);
-    };
-    return ReportTransform;
-}(stream.Transform));
-var FetchHttpClient = /** @class */ (function () {
-    function FetchHttpClient() {
     }
-    FetchHttpClient.prototype.sendRequest = function (httpRequest) {
+}
+class FetchHttpClient {
+    async sendRequest(httpRequest) {
         var _a;
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var abortController$1, abortListener, formData, requestForm_1, appendFormValue, _i, _b, formKey, formValue, j, contentType, body, onUploadProgress, uploadReportStream, platformSpecificRequestInit, requestInit, operationResponse, response, headers, streaming, _c, onDownloadProgress, responseBody, downloadReportStream, length_1, error_1, fetchError, uploadStreamDone, downloadStreamDone;
-            var _d;
-            return tslib.__generator(this, function (_e) {
-                switch (_e.label) {
-                    case 0:
-                        if (!httpRequest && typeof httpRequest !== "object") {
-                            throw new Error("'httpRequest' (WebResourceLike) cannot be null or undefined and must be of type object.");
-                        }
-                        abortController$1 = new abortController.AbortController();
-                        if (httpRequest.abortSignal) {
-                            if (httpRequest.abortSignal.aborted) {
-                                throw new abortController.AbortError("The operation was aborted.");
-                            }
-                            abortListener = function (event) {
-                                if (event.type === "abort") {
-                                    abortController$1.abort();
-                                }
-                            };
-                            httpRequest.abortSignal.addEventListener("abort", abortListener);
-                        }
-                        if (httpRequest.timeout) {
-                            setTimeout(function () {
-                                abortController$1.abort();
-                            }, httpRequest.timeout);
-                        }
-                        if (httpRequest.formData) {
-                            formData = httpRequest.formData;
-                            requestForm_1 = new FormData();
-                            appendFormValue = function (key, value) {
-                                // value function probably returns a stream so we can provide a fresh stream on each retry
-                                if (typeof value === "function") {
-                                    value = value();
-                                }
-                                if (value &&
-                                    Object.prototype.hasOwnProperty.call(value, "value") &&
-                                    Object.prototype.hasOwnProperty.call(value, "options")) {
-                                    requestForm_1.append(key, value.value, value.options);
-                                }
-                                else {
-                                    requestForm_1.append(key, value);
-                                }
-                            };
-                            for (_i = 0, _b = Object.keys(formData); _i < _b.length; _i++) {
-                                formKey = _b[_i];
-                                formValue = formData[formKey];
-                                if (Array.isArray(formValue)) {
-                                    for (j = 0; j < formValue.length; j++) {
-                                        appendFormValue(formKey, formValue[j]);
-                                    }
-                                }
-                                else {
-                                    appendFormValue(formKey, formValue);
-                                }
-                            }
-                            httpRequest.body = requestForm_1;
-                            httpRequest.formData = undefined;
-                            contentType = httpRequest.headers.get("Content-Type");
-                            if (contentType && contentType.indexOf("multipart/form-data") !== -1) {
-                                if (typeof requestForm_1.getBoundary === "function") {
-                                    httpRequest.headers.set("Content-Type", "multipart/form-data; boundary=" + requestForm_1.getBoundary());
-                                }
-                                else {
-                                    // browser will automatically apply a suitable content-type header
-                                    httpRequest.headers.remove("Content-Type");
-                                }
-                            }
-                        }
-                        body = httpRequest.body
-                            ? typeof httpRequest.body === "function"
-                                ? httpRequest.body()
-                                : httpRequest.body
-                            : undefined;
-                        if (httpRequest.onUploadProgress && httpRequest.body) {
-                            onUploadProgress = httpRequest.onUploadProgress;
-                            uploadReportStream = new ReportTransform(onUploadProgress);
-                            if (isReadableStream(body)) {
-                                body.pipe(uploadReportStream);
-                            }
-                            else {
-                                uploadReportStream.end(body);
-                            }
-                            body = uploadReportStream;
-                        }
-                        return [4 /*yield*/, this.prepareRequest(httpRequest)];
-                    case 1:
-                        platformSpecificRequestInit = _e.sent();
-                        requestInit = tslib.__assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, signal: abortController$1.signal, redirect: "manual" }, platformSpecificRequestInit);
-                        _e.label = 2;
-                    case 2:
-                        _e.trys.push([2, 8, 9, 10]);
-                        return [4 /*yield*/, this.fetch(httpRequest.url, requestInit)];
-                    case 3:
-                        response = _e.sent();
-                        headers = parseHeaders(response.headers);
-                        streaming = ((_a = httpRequest.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(response.status)) ||
-                            httpRequest.streamResponseBody;
-                        _d = {
-                            headers: headers,
-                            request: httpRequest,
-                            status: response.status,
-                            readableStreamBody: streaming
-                                ? response.body
-                                : undefined
-                        };
-                        if (!!streaming) return [3 /*break*/, 5];
-                        return [4 /*yield*/, response.text()];
-                    case 4:
-                        _c = _e.sent();
-                        return [3 /*break*/, 6];
-                    case 5:
-                        _c = undefined;
-                        _e.label = 6;
-                    case 6:
-                        operationResponse = (_d.bodyAsText = _c,
-                            _d);
-                        onDownloadProgress = httpRequest.onDownloadProgress;
-                        if (onDownloadProgress) {
-                            responseBody = response.body || undefined;
-                            if (isReadableStream(responseBody)) {
-                                downloadReportStream = new ReportTransform(onDownloadProgress);
-                                responseBody.pipe(downloadReportStream);
-                                operationResponse.readableStreamBody = downloadReportStream;
-                            }
-                            else {
-                                length_1 = parseInt(headers.get("Content-Length")) || undefined;
-                                if (length_1) {
-                                    // Calling callback for non-stream response for consistency with browser
-                                    onDownloadProgress({ loadedBytes: length_1 });
-                                }
-                            }
-                        }
-                        return [4 /*yield*/, this.processRequest(operationResponse)];
-                    case 7:
-                        _e.sent();
-                        return [2 /*return*/, operationResponse];
-                    case 8:
-                        error_1 = _e.sent();
-                        fetchError = error_1;
-                        if (fetchError.code === "ENOTFOUND") {
-                            throw new RestError(fetchError.message, RestError.REQUEST_SEND_ERROR, undefined, httpRequest);
-                        }
-                        else if (fetchError.type === "aborted") {
-                            throw new abortController.AbortError("The operation was aborted.");
-                        }
-                        throw fetchError;
-                    case 9:
-                        // clean up event listener
-                        if (httpRequest.abortSignal && abortListener) {
-                            uploadStreamDone = Promise.resolve();
-                            if (isReadableStream(body)) {
-                                uploadStreamDone = isStreamComplete(body);
-                            }
-                            downloadStreamDone = Promise.resolve();
-                            if (isReadableStream(operationResponse === null || operationResponse === void 0 ? void 0 : operationResponse.readableStreamBody)) {
-                                downloadStreamDone = isStreamComplete(operationResponse.readableStreamBody);
-                            }
-                            Promise.all([uploadStreamDone, downloadStreamDone])
-                                .then(function () {
-                                var _a;
-                                (_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener);
-                                return;
-                            })
-                                .catch(function (e) {
-                                logger.warning("Error when cleaning up abortListener on httpRequest", e);
-                            });
-                        }
-                        return [7 /*endfinally*/];
-                    case 10: return [2 /*return*/];
+        if (!httpRequest && typeof httpRequest !== "object") {
+            throw new Error("'httpRequest' (WebResourceLike) cannot be null or undefined and must be of type object.");
+        }
+        const abortController$1 = new abortController.AbortController();
+        let abortListener;
+        if (httpRequest.abortSignal) {
+            if (httpRequest.abortSignal.aborted) {
+                throw new abortController.AbortError("The operation was aborted.");
+            }
+            abortListener = (event) => {
+                if (event.type === "abort") {
+                    abortController$1.abort();
                 }
-            });
-        });
-    };
-    return FetchHttpClient;
-}());
+            };
+            httpRequest.abortSignal.addEventListener("abort", abortListener);
+        }
+        if (httpRequest.timeout) {
+            setTimeout(() => {
+                abortController$1.abort();
+            }, httpRequest.timeout);
+        }
+        if (httpRequest.formData) {
+            const formData = httpRequest.formData;
+            const requestForm = new FormData();
+            const appendFormValue = (key, value) => {
+                // value function probably returns a stream so we can provide a fresh stream on each retry
+                if (typeof value === "function") {
+                    value = value();
+                }
+                if (value &&
+                    Object.prototype.hasOwnProperty.call(value, "value") &&
+                    Object.prototype.hasOwnProperty.call(value, "options")) {
+                    requestForm.append(key, value.value, value.options);
+                }
+                else {
+                    requestForm.append(key, value);
+                }
+            };
+            for (const formKey of Object.keys(formData)) {
+                const formValue = formData[formKey];
+                if (Array.isArray(formValue)) {
+                    for (let j = 0; j < formValue.length; j++) {
+                        appendFormValue(formKey, formValue[j]);
+                    }
+                }
+                else {
+                    appendFormValue(formKey, formValue);
+                }
+            }
+            httpRequest.body = requestForm;
+            httpRequest.formData = undefined;
+            const contentType = httpRequest.headers.get("Content-Type");
+            if (contentType && contentType.indexOf("multipart/form-data") !== -1) {
+                if (typeof requestForm.getBoundary === "function") {
+                    httpRequest.headers.set("Content-Type", `multipart/form-data; boundary=${requestForm.getBoundary()}`);
+                }
+                else {
+                    // browser will automatically apply a suitable content-type header
+                    httpRequest.headers.remove("Content-Type");
+                }
+            }
+        }
+        let body = httpRequest.body
+            ? typeof httpRequest.body === "function"
+                ? httpRequest.body()
+                : httpRequest.body
+            : undefined;
+        if (httpRequest.onUploadProgress && httpRequest.body) {
+            const onUploadProgress = httpRequest.onUploadProgress;
+            const uploadReportStream = new ReportTransform(onUploadProgress);
+            if (isReadableStream(body)) {
+                body.pipe(uploadReportStream);
+            }
+            else {
+                uploadReportStream.end(body);
+            }
+            body = uploadReportStream;
+        }
+        const platformSpecificRequestInit = await this.prepareRequest(httpRequest);
+        const requestInit = Object.assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, signal: abortController$1.signal, redirect: "manual" }, platformSpecificRequestInit);
+        let operationResponse;
+        try {
+            const response = await this.fetch(httpRequest.url, requestInit);
+            const headers = parseHeaders(response.headers);
+            const streaming = ((_a = httpRequest.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(response.status)) ||
+                httpRequest.streamResponseBody;
+            operationResponse = {
+                headers: headers,
+                request: httpRequest,
+                status: response.status,
+                readableStreamBody: streaming
+                    ? response.body
+                    : undefined,
+                bodyAsText: !streaming ? await response.text() : undefined
+            };
+            const onDownloadProgress = httpRequest.onDownloadProgress;
+            if (onDownloadProgress) {
+                const responseBody = response.body || undefined;
+                if (isReadableStream(responseBody)) {
+                    const downloadReportStream = new ReportTransform(onDownloadProgress);
+                    responseBody.pipe(downloadReportStream);
+                    operationResponse.readableStreamBody = downloadReportStream;
+                }
+                else {
+                    const length = parseInt(headers.get("Content-Length")) || undefined;
+                    if (length) {
+                        // Calling callback for non-stream response for consistency with browser
+                        onDownloadProgress({ loadedBytes: length });
+                    }
+                }
+            }
+            await this.processRequest(operationResponse);
+            return operationResponse;
+        }
+        catch (error) {
+            const fetchError = error;
+            if (fetchError.code === "ENOTFOUND") {
+                throw new RestError(fetchError.message, RestError.REQUEST_SEND_ERROR, undefined, httpRequest);
+            }
+            else if (fetchError.type === "aborted") {
+                throw new abortController.AbortError("The operation was aborted.");
+            }
+            throw fetchError;
+        }
+        finally {
+            // clean up event listener
+            if (httpRequest.abortSignal && abortListener) {
+                let uploadStreamDone = Promise.resolve();
+                if (isReadableStream(body)) {
+                    uploadStreamDone = isStreamComplete(body);
+                }
+                let downloadStreamDone = Promise.resolve();
+                if (isReadableStream(operationResponse === null || operationResponse === void 0 ? void 0 : operationResponse.readableStreamBody)) {
+                    downloadStreamDone = isStreamComplete(operationResponse.readableStreamBody);
+                }
+                Promise.all([uploadStreamDone, downloadStreamDone])
+                    .then(() => {
+                    var _a;
+                    (_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener);
+                    return;
+                })
+                    .catch((e) => {
+                    logger.warning("Error when cleaning up abortListener on httpRequest", e);
+                });
+            }
+        }
+    }
+}
 function isReadableStream(body) {
     return body && typeof body.pipe === "function";
 }
 function isStreamComplete(stream) {
-    return new Promise(function (resolve) {
+    return new Promise((resolve) => {
         stream.on("close", resolve);
         stream.on("end", resolve);
         stream.on("error", resolve);
     });
 }
 function parseHeaders(headers) {
-    var httpHeaders = new HttpHeaders();
-    headers.forEach(function (value, key) {
+    const httpHeaders = new HttpHeaders();
+    headers.forEach((value, key) => {
         httpHeaders.set(key, value);
     });
     return httpHeaders;
@@ -12648,14 +11668,14 @@ function parseHeaders(headers) {
 
 // Copyright (c) Microsoft Corporation.
 function createProxyAgent(requestUrl, proxySettings, headers) {
-    var host = URLBuilder.parse(proxySettings.host).getHost();
+    const host = URLBuilder.parse(proxySettings.host).getHost();
     if (!host) {
         throw new Error("Expecting a non-empty host in proxy settings.");
     }
     if (!isValidPort(proxySettings.port)) {
         throw new Error("Expecting a valid port number in the range of [0, 65535] in proxy settings.");
     }
-    var tunnelOptions = {
+    const tunnelOptions = {
         proxy: {
             host: host,
             port: proxySettings.port,
@@ -12663,18 +11683,21 @@ function createProxyAgent(requestUrl, proxySettings, headers) {
         }
     };
     if (proxySettings.username && proxySettings.password) {
-        tunnelOptions.proxy.proxyAuth = proxySettings.username + ":" + proxySettings.password;
+        tunnelOptions.proxy.proxyAuth = `${proxySettings.username}:${proxySettings.password}`;
     }
-    var isRequestHttps = isUrlHttps(requestUrl);
-    var isProxyHttps = isUrlHttps(proxySettings.host);
-    var proxyAgent = {
+    else if (proxySettings.username) {
+        tunnelOptions.proxy.proxyAuth = `${proxySettings.username}`;
+    }
+    const isRequestHttps = isUrlHttps(requestUrl);
+    const isProxyHttps = isUrlHttps(proxySettings.host);
+    const proxyAgent = {
         isHttps: isRequestHttps,
         agent: createTunnel(isRequestHttps, isProxyHttps, tunnelOptions)
     };
     return proxyAgent;
 }
 function isUrlHttps(url) {
-    var urlScheme = URLBuilder.parse(url).getScheme() || "";
+    const urlScheme = URLBuilder.parse(url).getScheme() || "";
     return urlScheme.toLowerCase() === "https";
 }
 function createTunnel(isRequestHttps, isProxyHttps, tunnelOptions) {
@@ -12701,26 +11724,24 @@ function isValidPort(port) {
 function getCachedAgent(isHttps, agentCache) {
     return isHttps ? agentCache.httpsAgent : agentCache.httpAgent;
 }
-var NodeFetchHttpClient = /** @class */ (function (_super) {
-    tslib.__extends(NodeFetchHttpClient, _super);
-    function NodeFetchHttpClient() {
-        var _this = _super !== null && _super.apply(this, arguments) || this;
-        _this.proxyAgents = {};
-        _this.keepAliveAgents = {};
-        _this.cookieJar = new tough.CookieJar(undefined, { looseMode: true });
-        return _this;
+class NodeFetchHttpClient extends FetchHttpClient {
+    constructor() {
+        super(...arguments);
+        this.proxyAgents = {};
+        this.keepAliveAgents = {};
+        this.cookieJar = new tough.CookieJar(undefined, { looseMode: true });
     }
-    NodeFetchHttpClient.prototype.getOrCreateAgent = function (httpRequest) {
-        var isHttps = isUrlHttps(httpRequest.url);
+    getOrCreateAgent(httpRequest) {
+        const isHttps = isUrlHttps(httpRequest.url);
         // At the moment, proxy settings and keepAlive are mutually
         // exclusive because the 'tunnel' library currently lacks the
         // ability to create a proxy with keepAlive turned on.
         if (httpRequest.proxySettings) {
-            var agent = getCachedAgent(isHttps, this.proxyAgents);
+            let agent = getCachedAgent(isHttps, this.proxyAgents);
             if (agent) {
                 return agent;
             }
-            var tunnel = createProxyAgent(httpRequest.url, httpRequest.proxySettings, httpRequest.headers);
+            const tunnel = createProxyAgent(httpRequest.url, httpRequest.proxySettings, httpRequest.headers);
             agent = tunnel.agent;
             if (tunnel.isHttps) {
                 this.proxyAgents.httpsAgent = tunnel.agent;
@@ -12731,11 +11752,11 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
             return agent;
         }
         else if (httpRequest.keepAlive) {
-            var agent = getCachedAgent(isHttps, this.keepAliveAgents);
+            let agent = getCachedAgent(isHttps, this.keepAliveAgents);
             if (agent) {
                 return agent;
             }
-            var agentOptions = {
+            const agentOptions = {
                 keepAlive: httpRequest.keepAlive
             };
             if (isHttps) {
@@ -12749,77 +11770,49 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
         else {
             return isHttps ? https.globalAgent : http.globalAgent;
         }
-    };
+    }
     // eslint-disable-next-line @azure/azure-sdk/ts-apisurface-standardized-verbs
-    NodeFetchHttpClient.prototype.fetch = function (input, init) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, node_fetch(input, init)];
+    async fetch(input, init) {
+        return node_fetch(input, init);
+    }
+    async prepareRequest(httpRequest) {
+        const requestInit = {};
+        if (this.cookieJar && !httpRequest.headers.get("Cookie")) {
+            const cookieString = await new Promise((resolve, reject) => {
+                this.cookieJar.getCookieString(httpRequest.url, (err, cookie) => {
+                    if (err) {
+                        reject(err);
+                    }
+                    else {
+                        resolve(cookie);
+                    }
+                });
             });
-        });
-    };
-    NodeFetchHttpClient.prototype.prepareRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var requestInit, cookieString;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        requestInit = {};
-                        if (!(this.cookieJar && !httpRequest.headers.get("Cookie"))) return [3 /*break*/, 2];
-                        return [4 /*yield*/, new Promise(function (resolve, reject) {
-                                _this.cookieJar.getCookieString(httpRequest.url, function (err, cookie) {
-                                    if (err) {
-                                        reject(err);
-                                    }
-                                    else {
-                                        resolve(cookie);
-                                    }
-                                });
-                            })];
-                    case 1:
-                        cookieString = _a.sent();
-                        httpRequest.headers.set("Cookie", cookieString);
-                        _a.label = 2;
-                    case 2:
-                        // Set the http(s) agent
-                        requestInit.agent = this.getOrCreateAgent(httpRequest);
-                        requestInit.compress = httpRequest.decompressResponse;
-                        return [2 /*return*/, requestInit];
-                }
-            });
-        });
-    };
-    NodeFetchHttpClient.prototype.processRequest = function (operationResponse) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var setCookieHeader_1;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!this.cookieJar) return [3 /*break*/, 2];
-                        setCookieHeader_1 = operationResponse.headers.get("Set-Cookie");
-                        if (!(setCookieHeader_1 !== undefined)) return [3 /*break*/, 2];
-                        return [4 /*yield*/, new Promise(function (resolve, reject) {
-                                _this.cookieJar.setCookie(setCookieHeader_1, operationResponse.request.url, { ignoreError: true }, function (err) {
-                                    if (err) {
-                                        reject(err);
-                                    }
-                                    else {
-                                        resolve();
-                                    }
-                                });
-                            })];
-                    case 1:
-                        _a.sent();
-                        _a.label = 2;
-                    case 2: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return NodeFetchHttpClient;
-}(FetchHttpClient));
+            httpRequest.headers.set("Cookie", cookieString);
+        }
+        // Set the http(s) agent
+        requestInit.agent = this.getOrCreateAgent(httpRequest);
+        requestInit.compress = httpRequest.decompressResponse;
+        return requestInit;
+    }
+    async processRequest(operationResponse) {
+        if (this.cookieJar) {
+            const setCookieHeader = operationResponse.headers.get("Set-Cookie");
+            if (setCookieHeader !== undefined) {
+                await new Promise((resolve, reject) => {
+                    this.cookieJar.setCookie(setCookieHeader, operationResponse.request.url, { ignoreError: true }, (err) => {
+                        if (err) {
+                            reject(err);
+                        }
+                        else {
+                            resolve();
+                        }
+                    });
+                });
+            }
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 (function (HttpPipelineLogLevel) {
@@ -12847,10 +11840,10 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
  * @param opts - OperationOptions object to convert to RequestOptionsBase
  */
 function operationOptionsToRequestOptionsBase(opts) {
-    var requestOptions = opts.requestOptions, tracingOptions = opts.tracingOptions, additionalOptions = tslib.__rest(opts, ["requestOptions", "tracingOptions"]);
-    var result = additionalOptions;
+    const { requestOptions, tracingOptions } = opts, additionalOptions = tslib.__rest(opts, ["requestOptions", "tracingOptions"]);
+    let result = additionalOptions;
     if (requestOptions) {
-        result = tslib.__assign(tslib.__assign({}, result), requestOptions);
+        result = Object.assign(Object.assign({}, result), requestOptions);
     }
     if (tracingOptions) {
         result.spanOptions = tracingOptions.spanOptions;
@@ -12860,8 +11853,8 @@ function operationOptionsToRequestOptionsBase(opts) {
 }
 
 // Copyright (c) Microsoft Corporation.
-var BaseRequestPolicy = /** @class */ (function () {
-    function BaseRequestPolicy(_nextPolicy, _options) {
+class BaseRequestPolicy {
+    constructor(_nextPolicy, _options) {
         this._nextPolicy = _nextPolicy;
         this._options = _options;
     }
@@ -12870,25 +11863,24 @@ var BaseRequestPolicy = /** @class */ (function () {
      * @param logLevel - The log level of the log that will be logged.
      * @returns Whether or not a log with the provided log level should be logged.
      */
-    BaseRequestPolicy.prototype.shouldLog = function (logLevel) {
+    shouldLog(logLevel) {
         return this._options.shouldLog(logLevel);
-    };
+    }
     /**
      * Attempt to log the provided message to the provided logger. If no logger was provided or if
      * the log level does not meat the logger's threshold, then nothing will be logged.
      * @param logLevel - The log level of this log.
      * @param message - The message of this log.
      */
-    BaseRequestPolicy.prototype.log = function (logLevel, message) {
+    log(logLevel, message) {
         this._options.log(logLevel, message);
-    };
-    return BaseRequestPolicy;
-}());
+    }
+}
 /**
  * Optional properties that can be used when creating a RequestPolicy.
  */
-var RequestPolicyOptions = /** @class */ (function () {
-    function RequestPolicyOptions(_logger) {
+class RequestPolicyOptions {
+    constructor(_logger) {
         this._logger = _logger;
     }
     /**
@@ -12896,104 +11888,89 @@ var RequestPolicyOptions = /** @class */ (function () {
      * @param logLevel - The log level of the log that will be logged.
      * @returns Whether or not a log with the provided log level should be logged.
      */
-    RequestPolicyOptions.prototype.shouldLog = function (logLevel) {
+    shouldLog(logLevel) {
         return (!!this._logger &&
             logLevel !== exports.HttpPipelineLogLevel.OFF &&
             logLevel <= this._logger.minimumLogLevel);
-    };
+    }
     /**
      * Attempt to log the provided message to the provided logger. If no logger was provided or if
      * the log level does not meet the logger's threshold, then nothing will be logged.
      * @param logLevel - The log level of this log.
      * @param message - The message of this log.
      */
-    RequestPolicyOptions.prototype.log = function (logLevel, message) {
+    log(logLevel, message) {
         if (this._logger && this.shouldLog(logLevel)) {
             this._logger.log(logLevel, message);
         }
-    };
-    return RequestPolicyOptions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-function logPolicy(loggingOptions) {
-    if (loggingOptions === void 0) { loggingOptions = {}; }
+function logPolicy(loggingOptions = {}) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new LogPolicy(nextPolicy, options, loggingOptions);
         }
     };
 }
-var LogPolicy = /** @class */ (function (_super) {
-    tslib.__extends(LogPolicy, _super);
-    function LogPolicy(nextPolicy, options, _a) {
-        var _b = _a === void 0 ? {} : _a, _c = _b.logger, logger$1 = _c === void 0 ? logger.info : _c, _d = _b.allowedHeaderNames, allowedHeaderNames = _d === void 0 ? [] : _d, _e = _b.allowedQueryParameters, allowedQueryParameters = _e === void 0 ? [] : _e;
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.logger = logger$1;
-        _this.sanitizer = new Sanitizer({ allowedHeaderNames: allowedHeaderNames, allowedQueryParameters: allowedQueryParameters });
-        return _this;
+class LogPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, { logger: logger$1 = logger.info, allowedHeaderNames = [], allowedQueryParameters = [] } = {}) {
+        super(nextPolicy, options);
+        this.logger = logger$1;
+        this.sanitizer = new Sanitizer({ allowedHeaderNames, allowedQueryParameters });
     }
-    Object.defineProperty(LogPolicy.prototype, "allowedHeaderNames", {
-        /**
-         * Header names whose values will be logged when logging is enabled. Defaults to
-         * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
-         * specified in this field will be added to that list.  Any other values will
-         * be written to logs as "REDACTED".
-         * @deprecated Pass these into the constructor instead.
-         */
-        get: function () {
-            return this.sanitizer.allowedHeaderNames;
-        },
-        /**
-         * Header names whose values will be logged when logging is enabled. Defaults to
-         * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
-         * specified in this field will be added to that list.  Any other values will
-         * be written to logs as "REDACTED".
-         * @deprecated Pass these into the constructor instead.
-         */
-        set: function (allowedHeaderNames) {
-            this.sanitizer.allowedHeaderNames = allowedHeaderNames;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(LogPolicy.prototype, "allowedQueryParameters", {
-        /**
-         * Query string names whose values will be logged when logging is enabled. By default no
-         * query string values are logged.
-         * @deprecated Pass these into the constructor instead.
-         */
-        get: function () {
-            return this.sanitizer.allowedQueryParameters;
-        },
-        /**
-         * Query string names whose values will be logged when logging is enabled. By default no
-         * query string values are logged.
-         * @deprecated Pass these into the constructor instead.
-         */
-        set: function (allowedQueryParameters) {
-            this.sanitizer.allowedQueryParameters = allowedQueryParameters;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    LogPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    /**
+     * Header names whose values will be logged when logging is enabled. Defaults to
+     * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
+     * specified in this field will be added to that list.  Any other values will
+     * be written to logs as "REDACTED".
+     * @deprecated Pass these into the constructor instead.
+     */
+    get allowedHeaderNames() {
+        return this.sanitizer.allowedHeaderNames;
+    }
+    /**
+     * Header names whose values will be logged when logging is enabled. Defaults to
+     * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
+     * specified in this field will be added to that list.  Any other values will
+     * be written to logs as "REDACTED".
+     * @deprecated Pass these into the constructor instead.
+     */
+    set allowedHeaderNames(allowedHeaderNames) {
+        this.sanitizer.allowedHeaderNames = allowedHeaderNames;
+    }
+    /**
+     * Query string names whose values will be logged when logging is enabled. By default no
+     * query string values are logged.
+     * @deprecated Pass these into the constructor instead.
+     */
+    get allowedQueryParameters() {
+        return this.sanitizer.allowedQueryParameters;
+    }
+    /**
+     * Query string names whose values will be logged when logging is enabled. By default no
+     * query string values are logged.
+     * @deprecated Pass these into the constructor instead.
+     */
+    set allowedQueryParameters(allowedQueryParameters) {
+        this.sanitizer.allowedQueryParameters = allowedQueryParameters;
+    }
+    sendRequest(request) {
         if (!this.logger.enabled)
             return this._nextPolicy.sendRequest(request);
         this.logRequest(request);
-        return this._nextPolicy.sendRequest(request).then(function (response) { return _this.logResponse(response); });
-    };
-    LogPolicy.prototype.logRequest = function (request) {
-        this.logger("Request: " + this.sanitizer.sanitize(request));
-    };
-    LogPolicy.prototype.logResponse = function (response) {
-        this.logger("Response status code: " + response.status);
-        this.logger("Headers: " + this.sanitizer.sanitize(response.headers));
+        return this._nextPolicy.sendRequest(request).then((response) => this.logResponse(response));
+    }
+    logRequest(request) {
+        this.logger(`Request: ${this.sanitizer.sanitize(request)}`);
+    }
+    logResponse(response) {
+        this.logger(`Response status code: ${response.status}`);
+        this.logger(`Headers: ${this.sanitizer.sanitize(response.headers)}`);
         return response;
-    };
-    return LogPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -13006,7 +11983,7 @@ function getPathStringFromParameter(parameter) {
     return getPathStringFromParameterPath(parameter.parameterPath, parameter.mapper);
 }
 function getPathStringFromParameterPath(parameterPath, mapper) {
-    var result;
+    let result;
     if (typeof parameterPath === "string") {
         result = parameterPath;
     }
@@ -13025,9 +12002,9 @@ function getPathStringFromParameterPath(parameterPath, mapper) {
  * @internal
  */
 function getStreamResponseStatusCodes(operationSpec) {
-    var result = new Set();
-    for (var statusCode in operationSpec.responses) {
-        var operationResponse = operationSpec.responses[statusCode];
+    const result = new Set();
+    for (const statusCode in operationSpec.responses) {
+        const operationResponse = operationSpec.responses[statusCode];
         if (operationResponse.bodyMapper &&
             operationResponse.bodyMapper.type.name === MapperType.Stream) {
             result.add(Number(statusCode));
@@ -13041,7 +12018,7 @@ function getStreamResponseStatusCodes(operationSpec) {
 // by the xm2js library is mutable. See https://github.com/Leonidas-from-XIV/node-xml2js/issues/536
 // By creating a new copy of the settings each time we instantiate the parser,
 // we are safeguarding against the possibility of the default settings being mutated elsewhere unintentionally.
-var xml2jsDefaultOptionsV2 = {
+const xml2jsDefaultOptionsV2 = {
     explicitCharkey: false,
     trim: false,
     normalize: false,
@@ -13082,10 +12059,10 @@ var xml2jsDefaultOptionsV2 = {
     cdata: false
 };
 // The xml2js settings for general XML parsing operations.
-var xml2jsParserSettings = Object.assign({}, xml2jsDefaultOptionsV2);
+const xml2jsParserSettings = Object.assign({}, xml2jsDefaultOptionsV2);
 xml2jsParserSettings.explicitArray = false;
 // The xml2js settings for general XML building operations.
-var xml2jsBuilderSettings = Object.assign({}, xml2jsDefaultOptionsV2);
+const xml2jsBuilderSettings = Object.assign({}, xml2jsDefaultOptionsV2);
 xml2jsBuilderSettings.explicitArray = false;
 xml2jsBuilderSettings.renderOpts = {
     pretty: false
@@ -13095,12 +12072,11 @@ xml2jsBuilderSettings.renderOpts = {
  * @param obj - JSON object to be converted into XML string
  * @param opts - Options that govern the parsing of given JSON object
  */
-function stringifyXML(obj, opts) {
+function stringifyXML(obj, opts = {}) {
     var _a;
-    if (opts === void 0) { opts = {}; }
     xml2jsBuilderSettings.rootName = opts.rootName;
     xml2jsBuilderSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
-    var builder = new xml2js.Builder(xml2jsBuilderSettings);
+    const builder = new xml2js.Builder(xml2jsBuilderSettings);
     return builder.buildObject(obj);
 }
 /**
@@ -13108,18 +12084,17 @@ function stringifyXML(obj, opts) {
  * @param str - String containing the XML content to be parsed into JSON
  * @param opts - Options that govern the parsing of given xml string
  */
-function parseXML(str, opts) {
+function parseXML(str, opts = {}) {
     var _a;
-    if (opts === void 0) { opts = {}; }
     xml2jsParserSettings.explicitRoot = !!opts.includeRoot;
     xml2jsParserSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
-    var xmlParser = new xml2js.Parser(xml2jsParserSettings);
-    return new Promise(function (resolve, reject) {
+    const xmlParser = new xml2js.Parser(xml2jsParserSettings);
+    return new Promise((resolve, reject) => {
         if (!str) {
             reject(new Error("Document is empty"));
         }
         else {
-            xmlParser.parseString(str, function (err, res) {
+            xmlParser.parseString(str, (err, res) => {
                 if (err) {
                     reject(err);
                 }
@@ -13138,14 +12113,14 @@ function parseXML(str, opts) {
  */
 function deserializationPolicy(deserializationContentTypes, parsingOptions) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new DeserializationPolicy(nextPolicy, options, deserializationContentTypes, parsingOptions);
         }
     };
 }
-var defaultJsonContentTypes = ["application/json", "text/json"];
-var defaultXmlContentTypes = ["application/xml", "application/atom+xml"];
-var DefaultDeserializationOptions = {
+const defaultJsonContentTypes = ["application/json", "text/json"];
+const defaultXmlContentTypes = ["application/xml", "application/atom+xml"];
+const DefaultDeserializationOptions = {
     expectedContentTypes: {
         json: defaultJsonContentTypes,
         xml: defaultXmlContentTypes
@@ -13155,39 +12130,28 @@ var DefaultDeserializationOptions = {
  * A RequestPolicy that will deserialize HTTP response bodies and headers as they pass through the
  * HTTP pipeline.
  */
-var DeserializationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(DeserializationPolicy, _super);
-    function DeserializationPolicy(nextPolicy, requestPolicyOptions, deserializationContentTypes, parsingOptions) {
-        if (parsingOptions === void 0) { parsingOptions = {}; }
+class DeserializationPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, requestPolicyOptions, deserializationContentTypes, parsingOptions = {}) {
         var _a;
-        var _this = _super.call(this, nextPolicy, requestPolicyOptions) || this;
-        _this.jsonContentTypes =
+        super(nextPolicy, requestPolicyOptions);
+        this.jsonContentTypes =
             (deserializationContentTypes && deserializationContentTypes.json) || defaultJsonContentTypes;
-        _this.xmlContentTypes =
+        this.xmlContentTypes =
             (deserializationContentTypes && deserializationContentTypes.xml) || defaultXmlContentTypes;
-        _this.xmlCharKey = (_a = parsingOptions.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
-        return _this;
+        this.xmlCharKey = (_a = parsingOptions.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
     }
-    DeserializationPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this._nextPolicy.sendRequest(request).then(function (response) {
-                        return deserializeResponseBody(_this.jsonContentTypes, _this.xmlContentTypes, response, {
-                            xmlCharKey: _this.xmlCharKey
-                        });
-                    })];
-            });
-        });
-    };
-    return DeserializationPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        return this._nextPolicy.sendRequest(request).then((response) => deserializeResponseBody(this.jsonContentTypes, this.xmlContentTypes, response, {
+            xmlCharKey: this.xmlCharKey
+        }));
+    }
+}
 function getOperationResponse(parsedResponse) {
-    var result;
-    var request = parsedResponse.request;
-    var operationSpec = request.operationSpec;
+    let result;
+    const request = parsedResponse.request;
+    const operationSpec = request.operationSpec;
     if (operationSpec) {
-        var operationResponseGetter = request.operationResponseGetter;
+        const operationResponseGetter = request.operationResponseGetter;
         if (!operationResponseGetter) {
             result = operationSpec.responses[parsedResponse.status];
         }
@@ -13198,8 +12162,8 @@ function getOperationResponse(parsedResponse) {
     return result;
 }
 function shouldDeserializeResponse(parsedResponse) {
-    var shouldDeserialize = parsedResponse.request.shouldDeserialize;
-    var result;
+    const shouldDeserialize = parsedResponse.request.shouldDeserialize;
+    let result;
     if (shouldDeserialize === undefined) {
         result = true;
     }
@@ -13211,24 +12175,23 @@ function shouldDeserializeResponse(parsedResponse) {
     }
     return result;
 }
-function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options) {
+function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options = {}) {
     var _a, _b, _c;
-    if (options === void 0) { options = {}; }
-    var updatedOptions = {
+    const updatedOptions = {
         rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
         includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
         xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
     };
-    return parse(jsonContentTypes, xmlContentTypes, response, updatedOptions).then(function (parsedResponse) {
+    return parse(jsonContentTypes, xmlContentTypes, response, updatedOptions).then((parsedResponse) => {
         if (!shouldDeserializeResponse(parsedResponse)) {
             return parsedResponse;
         }
-        var operationSpec = parsedResponse.request.operationSpec;
+        const operationSpec = parsedResponse.request.operationSpec;
         if (!operationSpec || !operationSpec.responses) {
             return parsedResponse;
         }
-        var responseSpec = getOperationResponse(parsedResponse);
-        var _a = handleErrorResponse(parsedResponse, operationSpec, responseSpec), error = _a.error, shouldReturnResponse = _a.shouldReturnResponse;
+        const responseSpec = getOperationResponse(parsedResponse);
+        const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec);
         if (error) {
             throw error;
         }
@@ -13239,7 +12202,7 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, op
         // use it to deserialize the response.
         if (responseSpec) {
             if (responseSpec.bodyMapper) {
-                var valueToDeserialize = parsedResponse.parsedBody;
+                let valueToDeserialize = parsedResponse.parsedBody;
                 if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperType.Sequence) {
                     valueToDeserialize =
                         typeof valueToDeserialize === "object"
@@ -13250,7 +12213,7 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, op
                     parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options);
                 }
                 catch (innerError) {
-                    var restError = new RestError("Error " + innerError + " occurred in deserializing the responseBody - " + parsedResponse.bodyAsText, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
+                    const restError = new RestError(`Error ${innerError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
                     throw restError;
                 }
             }
@@ -13266,14 +12229,14 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, op
     });
 }
 function isOperationSpecEmpty(operationSpec) {
-    var expectedStatusCodes = Object.keys(operationSpec.responses);
+    const expectedStatusCodes = Object.keys(operationSpec.responses);
     return (expectedStatusCodes.length === 0 ||
         (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default"));
 }
 function handleErrorResponse(parsedResponse, operationSpec, responseSpec) {
     var _a;
-    var isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;
-    var isExpectedStatusCode = isOperationSpecEmpty(operationSpec)
+    const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;
+    const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)
         ? isSuccessByStatus
         : !!responseSpec;
     if (isExpectedStatusCode) {
@@ -13286,35 +12249,35 @@ function handleErrorResponse(parsedResponse, operationSpec, responseSpec) {
             return { error: null, shouldReturnResponse: false };
         }
     }
-    var errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;
-    var streaming = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) ||
+    const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;
+    const streaming = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) ||
         parsedResponse.request.streamResponseBody;
-    var initialErrorMessage = streaming
-        ? "Unexpected status code: " + parsedResponse.status
+    const initialErrorMessage = streaming
+        ? `Unexpected status code: ${parsedResponse.status}`
         : parsedResponse.bodyAsText;
-    var error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
+    const error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
     // If the item failed but there's no error spec or default spec to deserialize the error,
     // we should fail so we just throw the parsed response
     if (!errorResponseSpec) {
         throw error;
     }
-    var defaultBodyMapper = errorResponseSpec.bodyMapper;
-    var defaultHeadersMapper = errorResponseSpec.headersMapper;
+    const defaultBodyMapper = errorResponseSpec.bodyMapper;
+    const defaultHeadersMapper = errorResponseSpec.headersMapper;
     try {
         // If error response has a body, try to deserialize it using default body mapper.
         // Then try to extract error code & message from it
         if (parsedResponse.parsedBody) {
-            var parsedBody = parsedResponse.parsedBody;
-            var parsedError = void 0;
+            const parsedBody = parsedResponse.parsedBody;
+            let parsedError;
             if (defaultBodyMapper) {
-                var valueToDeserialize = parsedBody;
+                let valueToDeserialize = parsedBody;
                 if (operationSpec.isXML && defaultBodyMapper.type.name === MapperType.Sequence) {
                     valueToDeserialize =
                         typeof parsedBody === "object" ? parsedBody[defaultBodyMapper.xmlElementName] : [];
                 }
                 parsedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody");
             }
-            var internalError = parsedBody.error || parsedError || parsedBody;
+            const internalError = parsedBody.error || parsedError || parsedBody;
             error.code = internalError.code;
             if (internalError.message) {
                 error.message = internalError.message;
@@ -13329,36 +12292,36 @@ function handleErrorResponse(parsedResponse, operationSpec, responseSpec) {
         }
     }
     catch (defaultError) {
-        error.message = "Error \"" + defaultError.message + "\" occurred in deserializing the responseBody - \"" + parsedResponse.bodyAsText + "\" for the default response.";
+        error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`;
     }
-    return { error: error, shouldReturnResponse: false };
+    return { error, shouldReturnResponse: false };
 }
 function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts) {
     var _a;
-    var errorHandler = function (err) {
-        var msg = "Error \"" + err + "\" occurred while parsing the response body - " + operationResponse.bodyAsText + ".";
-        var errCode = err.code || RestError.PARSE_ERROR;
-        var e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);
+    const errorHandler = (err) => {
+        const msg = `Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;
+        const errCode = err.code || RestError.PARSE_ERROR;
+        const e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);
         return Promise.reject(e);
     };
-    var streaming = ((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) ||
+    const streaming = ((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) ||
         operationResponse.request.streamResponseBody;
     if (!streaming && operationResponse.bodyAsText) {
-        var text_1 = operationResponse.bodyAsText;
-        var contentType = operationResponse.headers.get("Content-Type") || "";
-        var contentComponents = !contentType
+        const text = operationResponse.bodyAsText;
+        const contentType = operationResponse.headers.get("Content-Type") || "";
+        const contentComponents = !contentType
             ? []
-            : contentType.split(";").map(function (component) { return component.toLowerCase(); });
+            : contentType.split(";").map((component) => component.toLowerCase());
         if (contentComponents.length === 0 ||
-            contentComponents.some(function (component) { return jsonContentTypes.indexOf(component) !== -1; })) {
-            return new Promise(function (resolve) {
-                operationResponse.parsedBody = JSON.parse(text_1);
+            contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {
+            return new Promise((resolve) => {
+                operationResponse.parsedBody = JSON.parse(text);
                 resolve(operationResponse);
             }).catch(errorHandler);
         }
-        else if (contentComponents.some(function (component) { return xmlContentTypes.indexOf(component) !== -1; })) {
-            return parseXML(text_1, opts)
-                .then(function (body) {
+        else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {
+            return parseXML(text, opts)
+                .then((body) => {
                 operationResponse.parsedBody = body;
                 return operationResponse;
             })
@@ -13370,11 +12333,11 @@ function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var DEFAULT_CLIENT_RETRY_COUNT = 3;
+const DEFAULT_CLIENT_RETRY_COUNT = 3;
 // intervals are in ms
-var DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;
-var DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;
-var DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;
+const DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;
+const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;
+const DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;
 function isNumber(n) {
     return typeof n === "number";
 }
@@ -13401,8 +12364,7 @@ function shouldRetry(retryLimit, predicate, retryData, response, error) {
  * @param retryData -  The retry data.
  * @param err - The operation"s error, if any.
  */
-function updateRetryData(retryOptions, retryData, err) {
-    if (retryData === void 0) { retryData = { retryCount: 0, retryInterval: 0 }; }
+function updateRetryData(retryOptions, retryData = { retryCount: 0, retryInterval: 0 }, err) {
     if (err) {
         if (retryData.error) {
             err.innerError = retryData.error;
@@ -13412,18 +12374,72 @@ function updateRetryData(retryOptions, retryData, err) {
     // Adjust retry count
     retryData.retryCount++;
     // Adjust retry interval
-    var incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;
-    var boundedRandDelta = retryOptions.retryInterval * 0.8 +
+    let incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;
+    const boundedRandDelta = retryOptions.retryInterval * 0.8 +
         Math.floor(Math.random() * (retryOptions.retryInterval * 0.4));
     incrementDelta *= boundedRandDelta;
     retryData.retryInterval = Math.min(retryOptions.minRetryInterval + incrementDelta, retryOptions.maxRetryInterval);
     return retryData;
 }
 
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Helper TypeGuard that checks if the value is not null or undefined.
+ * @param thing - Anything
+ * @internal
+ */
+function isDefined(thing) {
+    return typeof thing !== "undefined" && thing !== null;
+}
+
+// Copyright (c) Microsoft Corporation.
+const StandardAbortMessage = "The operation was aborted.";
+/**
+ * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.
+ * @param delayInMs - The number of milliseconds to be delayed.
+ * @param value - The value to be resolved with after a timeout of t milliseconds.
+ * @param options - The options for delay - currently abort options
+ *   @param abortSignal - The abortSignal associated with containing operation.
+ *   @param abortErrorMsg - The abort error message associated with containing operation.
+ * @returns - Resolved promise
+ */
+function delay(delayInMs, value, options) {
+    return new Promise((resolve, reject) => {
+        let timer = undefined;
+        let onAborted = undefined;
+        const rejectOnAbort = () => {
+            return reject(new abortController.AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage));
+        };
+        const removeListeners = () => {
+            if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) {
+                options.abortSignal.removeEventListener("abort", onAborted);
+            }
+        };
+        onAborted = () => {
+            if (isDefined(timer)) {
+                clearTimeout(timer);
+            }
+            removeListeners();
+            return rejectOnAbort();
+        };
+        if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) {
+            return rejectOnAbort();
+        }
+        timer = setTimeout(() => {
+            removeListeners();
+            resolve(value);
+        }, delayInMs);
+        if (options === null || options === void 0 ? void 0 : options.abortSignal) {
+            options.abortSignal.addEventListener("abort", onAborted);
+        }
+    });
+}
+
 // Copyright (c) Microsoft Corporation.
 function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval);
         }
     };
@@ -13431,7 +12447,7 @@ function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {
 (function (RetryMode) {
     RetryMode[RetryMode["Exponential"] = 0] = "Exponential";
 })(exports.RetryMode || (exports.RetryMode = {}));
-var DefaultRetryOptions = {
+const DefaultRetryOptions = {
     maxRetries: DEFAULT_CLIENT_RETRY_COUNT,
     retryDelayInMs: DEFAULT_CLIENT_RETRY_INTERVAL,
     maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL
@@ -13439,8 +12455,7 @@ var DefaultRetryOptions = {
 /**
  * Instantiates a new "ExponentialRetryPolicyFilter" instance.
  */
-var ExponentialRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ExponentialRetryPolicy, _super);
+class ExponentialRetryPolicy extends BaseRequestPolicy {
     /**
      * @param nextPolicy - The next RequestPolicy in the pipeline chain.
      * @param options - The options for this RequestPolicy.
@@ -13449,217 +12464,188 @@ var ExponentialRetryPolicy = /** @class */ (function (_super) {
      * @param minRetryInterval - The minimum retry interval, in milliseconds.
      * @param maxRetryInterval - The maximum retry interval, in milliseconds.
      */
-    function ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
-        _this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
-        _this.maxRetryInterval = isNumber(maxRetryInterval)
+    constructor(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {
+        super(nextPolicy, options);
+        this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
+        this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
+        this.maxRetryInterval = isNumber(maxRetryInterval)
             ? maxRetryInterval
             : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
-        return _this;
     }
-    ExponentialRetryPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .then(function (response) { return retry(_this, request, response); })
-            .catch(function (error) { return retry(_this, request, error.response, undefined, error); });
-    };
-    return ExponentialRetryPolicy;
-}(BaseRequestPolicy));
-function retry(policy, request, response, retryData, requestError) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        function shouldPolicyRetry(responseParam) {
-            var statusCode = responseParam === null || responseParam === void 0 ? void 0 : responseParam.status;
-            if (statusCode === undefined ||
-                (statusCode < 500 && statusCode !== 408) ||
-                statusCode === 501 ||
-                statusCode === 505) {
-                return false;
-            }
-            return true;
+            .then((response) => retry(this, request, response))
+            .catch((error) => retry(this, request, error.response, undefined, error));
+    }
+}
+async function retry(policy, request, response, retryData, requestError) {
+    function shouldPolicyRetry(responseParam) {
+        const statusCode = responseParam === null || responseParam === void 0 ? void 0 : responseParam.status;
+        if (statusCode === 503 && (response === null || response === void 0 ? void 0 : response.headers.get(Constants.HeaderConstants.RETRY_AFTER))) {
+            return false;
         }
-        var isAborted, res, err_1, err;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    retryData = updateRetryData({
-                        retryInterval: policy.retryInterval,
-                        minRetryInterval: 0,
-                        maxRetryInterval: policy.maxRetryInterval
-                    }, retryData, requestError);
-                    isAborted = request.abortSignal && request.abortSignal.aborted;
-                    if (!(!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response))) return [3 /*break*/, 6];
-                    logger.info("Retrying request in " + retryData.retryInterval);
-                    _a.label = 1;
-                case 1:
-                    _a.trys.push([1, 4, , 5]);
-                    return [4 /*yield*/, delay(retryData.retryInterval)];
-                case 2:
-                    _a.sent();
-                    return [4 /*yield*/, policy._nextPolicy.sendRequest(request.clone())];
-                case 3:
-                    res = _a.sent();
-                    return [2 /*return*/, retry(policy, request, res, retryData)];
-                case 4:
-                    err_1 = _a.sent();
-                    return [2 /*return*/, retry(policy, request, response, retryData, err_1)];
-                case 5: return [3 /*break*/, 7];
-                case 6:
-                    if (isAborted || requestError || !response) {
-                        err = retryData.error ||
-                            new RestError("Failed to send the request.", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);
-                        throw err;
-                    }
-                    else {
-                        return [2 /*return*/, response];
-                    }
-                case 7: return [2 /*return*/];
-            }
-        });
-    });
+        if (statusCode === undefined ||
+            (statusCode < 500 && statusCode !== 408) ||
+            statusCode === 501 ||
+            statusCode === 505) {
+            return false;
+        }
+        return true;
+    }
+    retryData = updateRetryData({
+        retryInterval: policy.retryInterval,
+        minRetryInterval: 0,
+        maxRetryInterval: policy.maxRetryInterval
+    }, retryData, requestError);
+    const isAborted = request.abortSignal && request.abortSignal.aborted;
+    if (!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response)) {
+        logger.info(`Retrying request in ${retryData.retryInterval}`);
+        try {
+            await delay(retryData.retryInterval);
+            const res = await policy._nextPolicy.sendRequest(request.clone());
+            return retry(policy, request, res, retryData);
+        }
+        catch (err) {
+            return retry(policy, request, response, retryData, err);
+        }
+    }
+    else if (isAborted || requestError || !response) {
+        // If the operation failed in the end, return all errors instead of just the last one
+        const err = retryData.error ||
+            new RestError("Failed to send the request.", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);
+        throw err;
+    }
+    else {
+        return response;
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
-function generateClientRequestIdPolicy(requestIdHeaderName) {
-    if (requestIdHeaderName === void 0) { requestIdHeaderName = "x-ms-client-request-id"; }
+function generateClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id") {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new GenerateClientRequestIdPolicy(nextPolicy, options, requestIdHeaderName);
         }
     };
 }
-var GenerateClientRequestIdPolicy = /** @class */ (function (_super) {
-    tslib.__extends(GenerateClientRequestIdPolicy, _super);
-    function GenerateClientRequestIdPolicy(nextPolicy, options, _requestIdHeaderName) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._requestIdHeaderName = _requestIdHeaderName;
-        return _this;
+class GenerateClientRequestIdPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _requestIdHeaderName) {
+        super(nextPolicy, options);
+        this._requestIdHeaderName = _requestIdHeaderName;
     }
-    GenerateClientRequestIdPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         if (!request.headers.contains(this._requestIdHeaderName)) {
             request.headers.set(this._requestIdHeaderName, request.requestId);
         }
         return this._nextPolicy.sendRequest(request);
-    };
-    return GenerateClientRequestIdPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function getDefaultUserAgentKey() {
     return Constants.HeaderConstants.USER_AGENT;
 }
 function getPlatformSpecificData() {
-    var runtimeInfo = {
+    const runtimeInfo = {
         key: "Node",
         value: process.version
     };
-    var osInfo = {
+    const osInfo = {
         key: "OS",
-        value: "(" + os.arch() + "-" + os.type() + "-" + os.release() + ")"
+        value: `(${os.arch()}-${os.type()}-${os.release()})`
     };
     return [runtimeInfo, osInfo];
 }
 
 // Copyright (c) Microsoft Corporation.
 function getRuntimeInfo() {
-    var msRestRuntime = {
+    const msRestRuntime = {
         key: "core-http",
         value: Constants.coreHttpVersion
     };
     return [msRestRuntime];
 }
-function getUserAgentString(telemetryInfo, keySeparator, valueSeparator) {
-    if (keySeparator === void 0) { keySeparator = " "; }
-    if (valueSeparator === void 0) { valueSeparator = "/"; }
+function getUserAgentString(telemetryInfo, keySeparator = " ", valueSeparator = "/") {
     return telemetryInfo
-        .map(function (info) {
-        var value = info.value ? "" + valueSeparator + info.value : "";
-        return "" + info.key + value;
+        .map((info) => {
+        const value = info.value ? `${valueSeparator}${info.value}` : "";
+        return `${info.key}${value}`;
     })
         .join(keySeparator);
 }
-var getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
+const getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
 function getDefaultUserAgentValue() {
-    var runtimeInfo = getRuntimeInfo();
-    var platformSpecificData = getPlatformSpecificData();
-    var userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
+    const runtimeInfo = getRuntimeInfo();
+    const platformSpecificData = getPlatformSpecificData();
+    const userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
     return userAgent;
 }
 function userAgentPolicy(userAgentData) {
-    var key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null
+    const key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null
         ? getDefaultUserAgentKey()
         : userAgentData.key;
-    var value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null
+    const value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null
         ? getDefaultUserAgentValue()
         : userAgentData.value;
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new UserAgentPolicy(nextPolicy, options, key, value);
         }
     };
 }
-var UserAgentPolicy = /** @class */ (function (_super) {
-    tslib.__extends(UserAgentPolicy, _super);
-    function UserAgentPolicy(_nextPolicy, _options, headerKey, headerValue) {
-        var _this = _super.call(this, _nextPolicy, _options) || this;
-        _this._nextPolicy = _nextPolicy;
-        _this._options = _options;
-        _this.headerKey = headerKey;
-        _this.headerValue = headerValue;
-        return _this;
+class UserAgentPolicy extends BaseRequestPolicy {
+    constructor(_nextPolicy, _options, headerKey, headerValue) {
+        super(_nextPolicy, _options);
+        this._nextPolicy = _nextPolicy;
+        this._options = _options;
+        this.headerKey = headerKey;
+        this.headerValue = headerValue;
     }
-    UserAgentPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         this.addUserAgentHeader(request);
         return this._nextPolicy.sendRequest(request);
-    };
-    UserAgentPolicy.prototype.addUserAgentHeader = function (request) {
+    }
+    addUserAgentHeader(request) {
         if (!request.headers) {
             request.headers = new HttpHeaders();
         }
         if (!request.headers.get(this.headerKey) && this.headerValue) {
             request.headers.set(this.headerKey, this.headerValue);
         }
-    };
-    return UserAgentPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Methods that are allowed to follow redirects 301 and 302
  */
-var allowedRedirect = ["GET", "HEAD"];
-var DefaultRedirectOptions = {
+const allowedRedirect = ["GET", "HEAD"];
+const DefaultRedirectOptions = {
     handleRedirects: true,
     maxRetries: 20
 };
-function redirectPolicy(maximumRetries) {
-    if (maximumRetries === void 0) { maximumRetries = 20; }
+function redirectPolicy(maximumRetries = 20) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new RedirectPolicy(nextPolicy, options, maximumRetries);
         }
     };
 }
-var RedirectPolicy = /** @class */ (function (_super) {
-    tslib.__extends(RedirectPolicy, _super);
-    function RedirectPolicy(nextPolicy, options, maxRetries) {
-        if (maxRetries === void 0) { maxRetries = 20; }
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.maxRetries = maxRetries;
-        return _this;
+class RedirectPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, maxRetries = 20) {
+        super(nextPolicy, options);
+        this.maxRetries = maxRetries;
     }
-    RedirectPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request)
-            .then(function (response) { return handleRedirect(_this, response, 0); });
-    };
-    return RedirectPolicy;
-}(BaseRequestPolicy));
+            .then((response) => handleRedirect(this, response, 0));
+    }
+}
 function handleRedirect(policy, response, currentRetries) {
-    var request = response.request, status = response.status;
-    var locationHeader = response.headers.get("location");
+    const { request, status } = response;
+    const locationHeader = response.headers.get("location");
     if (locationHeader &&
         (status === 300 ||
             (status === 301 && allowedRedirect.includes(request.method)) ||
@@ -13667,7 +12653,7 @@ function handleRedirect(policy, response, currentRetries) {
             (status === 303 && request.method === "POST") ||
             status === 307) &&
         (!policy.maxRetries || currentRetries < policy.maxRetries)) {
-        var builder = URLBuilder.parse(request.url);
+        const builder = URLBuilder.parse(request.url);
         builder.setPath(locationHeader);
         request.url = builder.toString();
         // POST request with Status code 303 should be converted into a
@@ -13678,47 +12664,41 @@ function handleRedirect(policy, response, currentRetries) {
         }
         return policy._nextPolicy
             .sendRequest(request)
-            .then(function (res) { return handleRedirect(policy, res, currentRetries + 1); });
+            .then((res) => handleRedirect(policy, res, currentRetries + 1));
     }
     return Promise.resolve(response);
 }
 
 // Copyright (c) Microsoft Corporation.
-function rpRegistrationPolicy(retryTimeout) {
-    if (retryTimeout === void 0) { retryTimeout = 30; }
+function rpRegistrationPolicy(retryTimeout = 30) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new RPRegistrationPolicy(nextPolicy, options, retryTimeout);
         }
     };
 }
-var RPRegistrationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(RPRegistrationPolicy, _super);
-    function RPRegistrationPolicy(nextPolicy, options, _retryTimeout) {
-        if (_retryTimeout === void 0) { _retryTimeout = 30; }
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._retryTimeout = _retryTimeout;
-        return _this;
+class RPRegistrationPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _retryTimeout = 30) {
+        super(nextPolicy, options);
+        this._retryTimeout = _retryTimeout;
     }
-    RPRegistrationPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .then(function (response) { return registerIfNeeded(_this, request, response); });
-    };
-    return RPRegistrationPolicy;
-}(BaseRequestPolicy));
+            .then((response) => registerIfNeeded(this, request, response));
+    }
+}
 function registerIfNeeded(policy, request, response) {
     if (response.status === 409) {
-        var rpName = checkRPNotRegisteredError(response.bodyAsText);
+        const rpName = checkRPNotRegisteredError(response.bodyAsText);
         if (rpName) {
-            var urlPrefix = extractSubscriptionUrl(request.url);
+            const urlPrefix = extractSubscriptionUrl(request.url);
             return (registerRP(policy, urlPrefix, rpName, request)
                 // Autoregistration of ${provider} failed for some reason. We will not return this error
                 // instead will return the initial response with 409 status code back to the user.
                 // do nothing here as we are returning the original response at the end of this method.
-                .catch(function () { return false; })
-                .then(function (registrationStatus) {
+                .catch(() => false)
+                .then((registrationStatus) => {
                 if (registrationStatus) {
                     // Retry the original request. We have to change the x-ms-client-request-id
                     // otherwise Azure endpoint will return the initial 409 (cached) response.
@@ -13737,9 +12717,8 @@ function registerIfNeeded(policy, request, response) {
  * @param reuseUrlToo - Should the url from the original request be reused as well. Default false.
  * @returns A new request object with desired headers.
  */
-function getRequestEssentials(originalRequest, reuseUrlToo) {
-    if (reuseUrlToo === void 0) { reuseUrlToo = false; }
-    var reqOptions = originalRequest.clone();
+function getRequestEssentials(originalRequest, reuseUrlToo = false) {
+    const reqOptions = originalRequest.clone();
     if (reuseUrlToo) {
         reqOptions.url = originalRequest.url;
     }
@@ -13757,7 +12736,7 @@ function getRequestEssentials(originalRequest, reuseUrlToo) {
  * @returns The name of the RP if condition is satisfied else undefined.
  */
 function checkRPNotRegisteredError(body) {
-    var result, responseBody;
+    let result, responseBody;
     if (body) {
         try {
             responseBody = JSON.parse(body);
@@ -13770,7 +12749,7 @@ function checkRPNotRegisteredError(body) {
             responseBody.error.message &&
             responseBody.error.code &&
             responseBody.error.code === "MissingSubscriptionRegistration") {
-            var matchRes = responseBody.error.message.match(/.*'(.*)'/i);
+            const matchRes = responseBody.error.message.match(/.*'(.*)'/i);
             if (matchRes) {
                 result = matchRes.pop();
             }
@@ -13785,13 +12764,13 @@ function checkRPNotRegisteredError(body) {
  * @returns The url prefix as explained above.
  */
 function extractSubscriptionUrl(url) {
-    var result;
-    var matchRes = url.match(/.*\/subscriptions\/[a-f0-9-]+\//gi);
+    let result;
+    const matchRes = url.match(/.*\/subscriptions\/[a-f0-9-]+\//gi);
     if (matchRes && matchRes[0]) {
         result = matchRes[0];
     }
     else {
-        throw new Error("Unable to extract subscriptionId from the given url - " + url + ".");
+        throw new Error(`Unable to extract subscriptionId from the given url - ${url}.`);
     }
     return result;
 }
@@ -13802,20 +12781,18 @@ function extractSubscriptionUrl(url) {
  * @param provider - The provider name to be registered.
  * @param originalRequest - The original request sent by the user that returned a 409 response
  * with a message that the provider is not registered.
- * @param callback - The callback that handles the RP registration
  */
-function registerRP(policy, urlPrefix, provider, originalRequest) {
-    var postUrl = urlPrefix + "providers/" + provider + "/register?api-version=2016-02-01";
-    var getUrl = urlPrefix + "providers/" + provider + "?api-version=2016-02-01";
-    var reqOptions = getRequestEssentials(originalRequest);
+async function registerRP(policy, urlPrefix, provider, originalRequest) {
+    const postUrl = `${urlPrefix}providers/${provider}/register?api-version=2016-02-01`;
+    const getUrl = `${urlPrefix}providers/${provider}?api-version=2016-02-01`;
+    const reqOptions = getRequestEssentials(originalRequest);
     reqOptions.method = "POST";
     reqOptions.url = postUrl;
-    return policy._nextPolicy.sendRequest(reqOptions).then(function (response) {
-        if (response.status !== 200) {
-            throw new Error("Autoregistration of " + provider + " failed. Please try registering manually.");
-        }
-        return getRegistrationStatus(policy, getUrl, originalRequest);
-    });
+    const response = await policy._nextPolicy.sendRequest(reqOptions);
+    if (response.status !== 200) {
+        throw new Error(`Autoregistration of ${provider} failed. Please try registering manually.`);
+    }
+    return getRegistrationStatus(policy, getUrl, originalRequest);
 }
 /**
  * Polls the registration status of the provider that was registered. Polling happens at an interval of 30 seconds.
@@ -13826,25 +12803,24 @@ function registerRP(policy, urlPrefix, provider, originalRequest) {
  * with a message that the provider is not registered.
  * @returns True if RP Registration is successful.
  */
-function getRegistrationStatus(policy, url, originalRequest) {
-    var reqOptions = getRequestEssentials(originalRequest);
+async function getRegistrationStatus(policy, url, originalRequest) {
+    const reqOptions = getRequestEssentials(originalRequest);
     reqOptions.url = url;
     reqOptions.method = "GET";
-    return policy._nextPolicy.sendRequest(reqOptions).then(function (res) {
-        var obj = res.parsedBody;
-        if (res.parsedBody && obj.registrationState && obj.registrationState === "Registered") {
-            return true;
-        }
-        else {
-            return delay(policy._retryTimeout * 1000)
-                .then(function () { return getRegistrationStatus(policy, url, originalRequest); });
-        }
-    });
+    const res = await policy._nextPolicy.sendRequest(reqOptions);
+    const obj = res.parsedBody;
+    if (res.parsedBody && obj.registrationState && obj.registrationState === "Registered") {
+        return true;
+    }
+    else {
+        await delay(policy._retryTimeout * 1000);
+        return getRegistrationStatus(policy, url, originalRequest);
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
 // Default options for the cycler if none are provided
-var DEFAULT_CYCLER_OPTIONS = {
+const DEFAULT_CYCLER_OPTIONS = {
     forcedRefreshWindowInMs: 1000,
     retryIntervalInMs: 3000,
     refreshWindowInMs: 1000 * 60 * 2 // Start refreshing 2m before expiry
@@ -13862,59 +12838,33 @@ var DEFAULT_CYCLER_OPTIONS = {
  * throwing an exception
  * @returns - a promise that, if it resolves, will resolve with an access token
  */
-function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        // This wrapper handles exceptions gracefully as long as we haven't exceeded
-        // the timeout.
-        function tryGetAccessToken() {
-            return tslib.__awaiter(this, void 0, void 0, function () {
-                var _a, finalToken;
-                return tslib.__generator(this, function (_b) {
-                    switch (_b.label) {
-                        case 0:
-                            if (!(Date.now() < timeoutInMs)) return [3 /*break*/, 5];
-                            _b.label = 1;
-                        case 1:
-                            _b.trys.push([1, 3, , 4]);
-                            return [4 /*yield*/, getAccessToken()];
-                        case 2: return [2 /*return*/, _b.sent()];
-                        case 3:
-                            _a = _b.sent();
-                            return [2 /*return*/, null];
-                        case 4: return [3 /*break*/, 7];
-                        case 5: return [4 /*yield*/, getAccessToken()];
-                        case 6:
-                            finalToken = _b.sent();
-                            // Timeout is up, so throw if it's still null
-                            if (finalToken === null) {
-                                throw new Error("Failed to refresh access token.");
-                            }
-                            return [2 /*return*/, finalToken];
-                        case 7: return [2 /*return*/];
-                    }
-                });
-            });
-        }
-        var token;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0: return [4 /*yield*/, tryGetAccessToken()];
-                case 1:
-                    token = _a.sent();
-                    _a.label = 2;
-                case 2:
-                    if (!(token === null)) return [3 /*break*/, 5];
-                    return [4 /*yield*/, delay(retryIntervalInMs)];
-                case 3:
-                    _a.sent();
-                    return [4 /*yield*/, tryGetAccessToken()];
-                case 4:
-                    token = _a.sent();
-                    return [3 /*break*/, 2];
-                case 5: return [2 /*return*/, token];
+async function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {
+    // This wrapper handles exceptions gracefully as long as we haven't exceeded
+    // the timeout.
+    async function tryGetAccessToken() {
+        if (Date.now() < timeoutInMs) {
+            try {
+                return await getAccessToken();
             }
-        });
-    });
+            catch (_a) {
+                return null;
+            }
+        }
+        else {
+            const finalToken = await getAccessToken();
+            // Timeout is up, so throw if it's still null
+            if (finalToken === null) {
+                throw new Error("Failed to refresh access token.");
+            }
+            return finalToken;
+        }
+    }
+    let token = await tryGetAccessToken();
+    while (token === null) {
+        await delay(retryIntervalInMs);
+        token = await tryGetAccessToken();
+    }
+    return token;
 }
 /**
  * Creates a token cycler from a credential, scopes, and optional settings.
@@ -13932,15 +12882,14 @@ function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {
  * @returns - a function that reliably produces a valid access token
  */
 function createTokenCycler(credential, scopes, tokenCyclerOptions) {
-    var _this = this;
-    var refreshWorker = null;
-    var token = null;
-    var options = tslib.__assign(tslib.__assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);
+    let refreshWorker = null;
+    let token = null;
+    const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);
     /**
      * This little holder defines several predicates that we use to construct
      * the rules of refreshing the token.
      */
-    var cycler = {
+    const cycler = {
         /**
          * Produces true if a refresh job is currently in progress.
          */
@@ -13972,20 +12921,18 @@ function createTokenCycler(credential, scopes, tokenCyclerOptions) {
         var _a;
         if (!cycler.isRefreshing) {
             // We bind `scopes` here to avoid passing it around a lot
-            var tryGetAccessToken = function () {
-                return credential.getToken(scopes, getTokenOptions);
-            };
+            const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);
             // Take advantage of promise chaining to insert an assignment to `token`
             // before the refresh can be considered done.
             refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, 
             // If we don't have a token, then we should timeout immediately
             (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())
-                .then(function (_token) {
+                .then((_token) => {
                 refreshWorker = null;
                 token = _token;
                 return token;
             })
-                .catch(function (reason) {
+                .catch((reason) => {
                 // We also should reset the refresher if we enter a failed state.  All
                 // existing awaiters will throw, but subsequent requests will start a
                 // new retry chain.
@@ -13996,25 +12943,23 @@ function createTokenCycler(credential, scopes, tokenCyclerOptions) {
         }
         return refreshWorker;
     }
-    return function (tokenOptions) { return tslib.__awaiter(_this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            //
-            // Simple rules:
-            // - If we MUST refresh, then return the refresh task, blocking
-            //   the pipeline until a token is available.
-            // - If we SHOULD refresh, then run refresh but don't return it
-            //   (we can still use the cached token).
-            // - Return the token, since it's fine if we didn't return in
-            //   step 1.
-            //
-            if (cycler.mustRefresh)
-                return [2 /*return*/, refresh(tokenOptions)];
-            if (cycler.shouldRefresh) {
-                refresh(tokenOptions);
-            }
-            return [2 /*return*/, token];
-        });
-    }); };
+    return async (tokenOptions) => {
+        //
+        // Simple rules:
+        // - If we MUST refresh, then return the refresh task, blocking
+        //   the pipeline until a token is available.
+        // - If we SHOULD refresh, then run refresh but don't return it
+        //   (we can still use the cached token).
+        // - Return the token, since it's fine if we didn't return in
+        //   step 1.
+        //
+        if (cycler.mustRefresh)
+            return refresh(tokenOptions);
+        if (cycler.shouldRefresh) {
+            refresh(tokenOptions);
+        }
+        return token;
+    };
 }
 // #endregion
 /**
@@ -14026,36 +12971,28 @@ function createTokenCycler(credential, scopes, tokenCyclerOptions) {
  */
 function bearerTokenAuthenticationPolicy(credential, scopes) {
     // This simple function encapsulates the entire process of reliably retrieving the token
-    var getToken = createTokenCycler(credential, scopes /* , options */);
-    var BearerTokenAuthenticationPolicy = /** @class */ (function (_super) {
-        tslib.__extends(BearerTokenAuthenticationPolicy, _super);
-        function BearerTokenAuthenticationPolicy(nextPolicy, options) {
-            return _super.call(this, nextPolicy, options) || this;
+    const getToken = createTokenCycler(credential, scopes /* , options */);
+    class BearerTokenAuthenticationPolicy extends BaseRequestPolicy {
+        constructor(nextPolicy, options) {
+            super(nextPolicy, options);
         }
-        BearerTokenAuthenticationPolicy.prototype.sendRequest = function (webResource) {
-            return tslib.__awaiter(this, void 0, void 0, function () {
-                var token;
-                return tslib.__generator(this, function (_a) {
-                    switch (_a.label) {
-                        case 0: return [4 /*yield*/, getToken({
-                                abortSignal: webResource.abortSignal,
-                                tracingOptions: {
-                                    spanOptions: webResource.spanOptions,
-                                    tracingContext: webResource.tracingContext
-                                }
-                            })];
-                        case 1:
-                            token = (_a.sent()).token;
-                            webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, "Bearer " + token);
-                            return [2 /*return*/, this._nextPolicy.sendRequest(webResource)];
-                    }
-                });
+        async sendRequest(webResource) {
+            if (!webResource.url.toLowerCase().startsWith("https://")) {
+                throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.");
+            }
+            const { token } = await getToken({
+                abortSignal: webResource.abortSignal,
+                tracingOptions: {
+                    spanOptions: webResource.spanOptions,
+                    tracingContext: webResource.tracingContext
+                }
             });
-        };
-        return BearerTokenAuthenticationPolicy;
-    }(BaseRequestPolicy));
+            webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${token}`);
+            return this._nextPolicy.sendRequest(webResource);
+        }
+    }
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new BearerTokenAuthenticationPolicy(nextPolicy, options);
         }
     };
@@ -14064,7 +13001,7 @@ function bearerTokenAuthenticationPolicy(credential, scopes) {
 // Copyright (c) Microsoft Corporation.
 function systemErrorRetryPolicy(retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval);
         }
     };
@@ -14075,69 +13012,55 @@ function systemErrorRetryPolicy(retryCount, retryInterval, minRetryInterval, max
  * @param minRetryInterval - The minimum retry interval, in milliseconds.
  * @param maxRetryInterval - The maximum retry interval, in milliseconds.
  */
-var SystemErrorRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(SystemErrorRetryPolicy, _super);
-    function SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
-        _this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
-        _this.minRetryInterval = isNumber(minRetryInterval)
+class SystemErrorRetryPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
+        super(nextPolicy, options);
+        this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
+        this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
+        this.minRetryInterval = isNumber(minRetryInterval)
             ? minRetryInterval
             : DEFAULT_CLIENT_MIN_RETRY_INTERVAL;
-        _this.maxRetryInterval = isNumber(maxRetryInterval)
+        this.maxRetryInterval = isNumber(maxRetryInterval)
             ? maxRetryInterval
             : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
-        return _this;
     }
-    SystemErrorRetryPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .catch(function (error) { return retry$1(_this, request, error.response, error); });
-    };
-    return SystemErrorRetryPolicy;
-}(BaseRequestPolicy));
-function retry$1(policy, request, operationResponse, err, retryData) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        function shouldPolicyRetry(_response, error) {
-            if (error &&
-                error.code &&
-                (error.code === "ETIMEDOUT" ||
-                    error.code === "ESOCKETTIMEDOUT" ||
-                    error.code === "ECONNREFUSED" ||
-                    error.code === "ECONNRESET" ||
-                    error.code === "ENOENT")) {
-                return true;
-            }
-            return false;
+            .catch((error) => retry$1(this, request, error.response, error));
+    }
+}
+async function retry$1(policy, request, operationResponse, err, retryData) {
+    retryData = updateRetryData(policy, retryData, err);
+    function shouldPolicyRetry(_response, error) {
+        if (error &&
+            error.code &&
+            (error.code === "ETIMEDOUT" ||
+                error.code === "ESOCKETTIMEDOUT" ||
+                error.code === "ECONNREFUSED" ||
+                error.code === "ECONNRESET" ||
+                error.code === "ENOENT")) {
+            return true;
         }
-        var nestedErr_1;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    retryData = updateRetryData(policy, retryData, err);
-                    if (!shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) return [3 /*break*/, 5];
-                    _a.label = 1;
-                case 1:
-                    _a.trys.push([1, 3, , 4]);
-                    return [4 /*yield*/, delay(retryData.retryInterval)];
-                case 2:
-                    _a.sent();
-                    return [2 /*return*/, policy._nextPolicy.sendRequest(request.clone())];
-                case 3:
-                    nestedErr_1 = _a.sent();
-                    return [2 /*return*/, retry$1(policy, request, operationResponse, nestedErr_1, retryData)];
-                case 4: return [3 /*break*/, 6];
-                case 5:
-                    if (err) {
-                        // If the operation failed in the end, return all errors instead of just the last one
-                        return [2 /*return*/, Promise.reject(retryData.error)];
-                    }
-                    return [2 /*return*/, operationResponse];
-                case 6: return [2 /*return*/];
-            }
-        });
-    });
+        return false;
+    }
+    if (shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) {
+        // If previous operation ended with an error and the policy allows a retry, do that
+        try {
+            await delay(retryData.retryInterval);
+            return policy._nextPolicy.sendRequest(request.clone());
+        }
+        catch (nestedErr) {
+            return retry$1(policy, request, operationResponse, nestedErr, retryData);
+        }
+    }
+    else {
+        if (err) {
+            // If the operation failed in the end, return all errors instead of just the last one
+            return Promise.reject(retryData.error);
+        }
+        return operationResponse;
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
@@ -14151,34 +13074,37 @@ function retry$1(policy, request, operationResponse, err, retryData) {
 
 // Copyright (c) Microsoft Corporation.
 /**
+ * Stores the patterns specified in NO_PROXY environment variable.
  * @internal
  */
-var noProxyList = [];
-var noProxyListLoaded = false;
-var byPassedList = new Map();
+const globalNoProxyList = [];
+let noProxyListLoaded = false;
+/** A cache of whether a host should bypass the proxy. */
+const globalBypassedMap = new Map();
 function loadEnvironmentProxyValue() {
     if (!process) {
         return undefined;
     }
-    var httpsProxy = getEnvironmentValue(Constants.HTTPS_PROXY);
-    var allProxy = getEnvironmentValue(Constants.ALL_PROXY);
-    var httpProxy = getEnvironmentValue(Constants.HTTP_PROXY);
+    const httpsProxy = getEnvironmentValue(Constants.HTTPS_PROXY);
+    const allProxy = getEnvironmentValue(Constants.ALL_PROXY);
+    const httpProxy = getEnvironmentValue(Constants.HTTP_PROXY);
     return httpsProxy || allProxy || httpProxy;
 }
-// Check whether the host of a given `uri` is in the noProxyList.
-// If there's a match, any request sent to the same host won't have the proxy settings set.
-// This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210
-function isBypassed(uri) {
+/**
+ * Check whether the host of a given `uri` matches any pattern in the no proxy list.
+ * If there's a match, any request sent to the same host shouldn't have the proxy settings set.
+ * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210
+ */
+function isBypassed(uri, noProxyList, bypassedMap) {
     if (noProxyList.length === 0) {
         return false;
     }
-    var host = URLBuilder.parse(uri).getHost();
-    if (byPassedList.has(host)) {
-        return byPassedList.get(host);
+    const host = URLBuilder.parse(uri).getHost();
+    if (bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.has(host)) {
+        return bypassedMap.get(host);
     }
-    var isBypassedFlag = false;
-    for (var _i = 0, noProxyList_1 = noProxyList; _i < noProxyList_1.length; _i++) {
-        var pattern = noProxyList_1[_i];
+    let isBypassedFlag = false;
+    for (const pattern of noProxyList) {
         if (pattern[0] === ".") {
             // This should match either domain it self or any subdomain or host
             // .foo.com will match foo.com it self or *.foo.com
@@ -14197,20 +13123,20 @@ function isBypassed(uri) {
             }
         }
     }
-    byPassedList.set(host, isBypassedFlag);
+    bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.set(host, isBypassedFlag);
     return isBypassedFlag;
 }
 /**
  * @internal
  */
 function loadNoProxy() {
-    var noProxy = getEnvironmentValue(Constants.NO_PROXY);
+    const noProxy = getEnvironmentValue(Constants.NO_PROXY);
     noProxyListLoaded = true;
     if (noProxy) {
         return noProxy
             .split(",")
-            .map(function (item) { return item.trim(); })
-            .filter(function (item) { return item.length; });
+            .map((item) => item.trim())
+            .filter((item) => item.length);
     }
     return [];
 }
@@ -14221,174 +13147,184 @@ function getDefaultProxySettings(proxyUrl) {
             return undefined;
         }
     }
-    var _a = extractAuthFromUrl(proxyUrl), username = _a.username, password = _a.password, urlWithoutAuth = _a.urlWithoutAuth;
-    var parsedUrl = URLBuilder.parse(urlWithoutAuth);
-    var schema = parsedUrl.getScheme() ? parsedUrl.getScheme() + "://" : "";
+    const { username, password, urlWithoutAuth } = extractAuthFromUrl(proxyUrl);
+    const parsedUrl = URLBuilder.parse(urlWithoutAuth);
+    const schema = parsedUrl.getScheme() ? parsedUrl.getScheme() + "://" : "";
     return {
         host: schema + parsedUrl.getHost(),
         port: Number.parseInt(parsedUrl.getPort() || "80"),
-        username: username,
-        password: password
+        username,
+        password
     };
 }
-function proxyPolicy(proxySettings) {
+/**
+ * A policy that allows one to apply proxy settings to all requests.
+ * If not passed static settings, they will be retrieved from the HTTPS_PROXY
+ * or HTTP_PROXY environment variables.
+ * @param proxySettings - ProxySettings to use on each request.
+ * @param options - additional settings, for example, custom NO_PROXY patterns
+ */
+function proxyPolicy(proxySettings, options) {
     if (!proxySettings) {
         proxySettings = getDefaultProxySettings();
     }
     if (!noProxyListLoaded) {
-        noProxyList.push.apply(noProxyList, loadNoProxy());
+        globalNoProxyList.push(...loadNoProxy());
     }
     return {
-        create: function (nextPolicy, options) {
-            return new ProxyPolicy(nextPolicy, options, proxySettings);
+        create: (nextPolicy, requestPolicyOptions) => {
+            return new ProxyPolicy(nextPolicy, requestPolicyOptions, proxySettings, options === null || options === void 0 ? void 0 : options.customNoProxyList);
         }
     };
 }
 function extractAuthFromUrl(url) {
-    var atIndex = url.indexOf("@");
+    const atIndex = url.indexOf("@");
     if (atIndex === -1) {
         return { urlWithoutAuth: url };
     }
-    var schemeIndex = url.indexOf("://");
-    var authStart = schemeIndex !== -1 ? schemeIndex + 3 : 0;
-    var auth = url.substring(authStart, atIndex);
-    var colonIndex = auth.indexOf(":");
-    var hasPassword = colonIndex !== -1;
-    var username = hasPassword ? auth.substring(0, colonIndex) : auth;
-    var password = hasPassword ? auth.substring(colonIndex + 1) : undefined;
-    var urlWithoutAuth = url.substring(0, authStart) + url.substring(atIndex + 1);
+    const schemeIndex = url.indexOf("://");
+    const authStart = schemeIndex !== -1 ? schemeIndex + 3 : 0;
+    const auth = url.substring(authStart, atIndex);
+    const colonIndex = auth.indexOf(":");
+    const hasPassword = colonIndex !== -1;
+    const username = hasPassword ? auth.substring(0, colonIndex) : auth;
+    const password = hasPassword ? auth.substring(colonIndex + 1) : undefined;
+    const urlWithoutAuth = url.substring(0, authStart) + url.substring(atIndex + 1);
     return {
-        username: username,
-        password: password,
-        urlWithoutAuth: urlWithoutAuth
+        username,
+        password,
+        urlWithoutAuth
     };
 }
-var ProxyPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ProxyPolicy, _super);
-    function ProxyPolicy(nextPolicy, options, proxySettings) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.proxySettings = proxySettings;
-        return _this;
+class ProxyPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, proxySettings, customNoProxyList) {
+        super(nextPolicy, options);
+        this.proxySettings = proxySettings;
+        this.customNoProxyList = customNoProxyList;
     }
-    ProxyPolicy.prototype.sendRequest = function (request) {
-        if (!request.proxySettings && !isBypassed(request.url)) {
+    sendRequest(request) {
+        var _a;
+        if (!request.proxySettings &&
+            !isBypassed(request.url, (_a = this.customNoProxyList) !== null && _a !== void 0 ? _a : globalNoProxyList, this.customNoProxyList ? undefined : globalBypassedMap)) {
             request.proxySettings = this.proxySettings;
         }
         return this._nextPolicy.sendRequest(request);
-    };
-    return ProxyPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var StatusCodes = Constants.HttpConstants.StatusCodes;
+// Licensed under the MIT license.
+/**
+ * Maximum number of retries for the throttling retry policy
+ */
+const DEFAULT_CLIENT_MAX_RETRY_COUNT = 3;
+
+// Copyright (c) Microsoft Corporation.
+const StatusCodes = Constants.HttpConstants.StatusCodes;
 function throttlingRetryPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new ThrottlingRetryPolicy(nextPolicy, options);
         }
     };
 }
+const StandardAbortMessage$1 = "The operation was aborted.";
 /**
  * To learn more, please refer to
  * https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,
  * https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits and
  * https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors
  */
-var ThrottlingRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ThrottlingRetryPolicy, _super);
-    function ThrottlingRetryPolicy(nextPolicy, options, _handleResponse) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._handleResponse = _handleResponse || _this._defaultResponseHandler;
-        return _this;
+class ThrottlingRetryPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _handleResponse) {
+        super(nextPolicy, options);
+        this.numberOfRetries = 0;
+        this._handleResponse = _handleResponse || this._defaultResponseHandler;
     }
-    ThrottlingRetryPolicy.prototype.sendRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this._nextPolicy.sendRequest(httpRequest.clone()).then(function (response) {
-                        if (response.status !== StatusCodes.TooManyRequests) {
-                            return response;
-                        }
-                        else {
-                            return _this._handleResponse(httpRequest, response);
-                        }
-                    })];
-            });
-        });
-    };
-    ThrottlingRetryPolicy.prototype._defaultResponseHandler = function (httpRequest, httpResponse) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var retryAfterHeader, delayInMs;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);
-                if (retryAfterHeader) {
-                    delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);
-                    if (delayInMs) {
-                        return [2 /*return*/, delay(delayInMs).then(function (_) { return _this._nextPolicy.sendRequest(httpRequest); })];
-                    }
+    async sendRequest(httpRequest) {
+        const response = await this._nextPolicy.sendRequest(httpRequest.clone());
+        if (response.status !== StatusCodes.TooManyRequests &&
+            response.status !== StatusCodes.ServiceUnavailable) {
+            return response;
+        }
+        else {
+            return this._handleResponse(httpRequest, response);
+        }
+    }
+    async _defaultResponseHandler(httpRequest, httpResponse) {
+        var _a;
+        const retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);
+        if (retryAfterHeader) {
+            const delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);
+            if (delayInMs) {
+                this.numberOfRetries += 1;
+                await delay(delayInMs, undefined, {
+                    abortSignal: httpRequest.abortSignal,
+                    abortErrorMsg: StandardAbortMessage$1
+                });
+                if ((_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
+                    throw new abortController.AbortError(StandardAbortMessage$1);
                 }
-                return [2 /*return*/, httpResponse];
-            });
-        });
-    };
-    ThrottlingRetryPolicy.parseRetryAfterHeader = function (headerValue) {
-        var retryAfterInSeconds = Number(headerValue);
+                if (this.numberOfRetries < DEFAULT_CLIENT_MAX_RETRY_COUNT) {
+                    return this.sendRequest(httpRequest);
+                }
+                else {
+                    return this._nextPolicy.sendRequest(httpRequest);
+                }
+            }
+        }
+        return httpResponse;
+    }
+    static parseRetryAfterHeader(headerValue) {
+        const retryAfterInSeconds = Number(headerValue);
         if (Number.isNaN(retryAfterInSeconds)) {
             return ThrottlingRetryPolicy.parseDateRetryAfterHeader(headerValue);
         }
         else {
             return retryAfterInSeconds * 1000;
         }
-    };
-    ThrottlingRetryPolicy.parseDateRetryAfterHeader = function (headerValue) {
+    }
+    static parseDateRetryAfterHeader(headerValue) {
         try {
-            var now = Date.now();
-            var date = Date.parse(headerValue);
-            var diff = date - now;
+            const now = Date.now();
+            const date = Date.parse(headerValue);
+            const diff = date - now;
             return Number.isNaN(diff) ? undefined : diff;
         }
         catch (error) {
             return undefined;
         }
-    };
-    return ThrottlingRetryPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function signingPolicy(authenticationProvider) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new SigningPolicy(nextPolicy, options, authenticationProvider);
         }
     };
 }
-var SigningPolicy = /** @class */ (function (_super) {
-    tslib.__extends(SigningPolicy, _super);
-    function SigningPolicy(nextPolicy, options, authenticationProvider) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.authenticationProvider = authenticationProvider;
-        return _this;
+class SigningPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, authenticationProvider) {
+        super(nextPolicy, options);
+        this.authenticationProvider = authenticationProvider;
     }
-    SigningPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         return this.authenticationProvider.signRequest(request);
-    };
-    SigningPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
-        return this.signRequest(request).then(function (nextRequest) {
-            return _this._nextPolicy.sendRequest(nextRequest);
-        });
-    };
-    return SigningPolicy;
-}(BaseRequestPolicy));
+    }
+    sendRequest(request) {
+        return this.signRequest(request).then((nextRequest) => this._nextPolicy.sendRequest(nextRequest));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var DefaultKeepAliveOptions = {
+const DefaultKeepAliveOptions = {
     enable: true
 };
 function keepAlivePolicy(keepAliveOptions) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new KeepAlivePolicy(nextPolicy, options, keepAliveOptions || DefaultKeepAliveOptions);
         }
     };
@@ -14396,8 +13332,7 @@ function keepAlivePolicy(keepAliveOptions) {
 /**
  * KeepAlivePolicy is a policy used to control keep alive settings for every request.
  */
-var KeepAlivePolicy = /** @class */ (function (_super) {
-    tslib.__extends(KeepAlivePolicy, _super);
+class KeepAlivePolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of KeepAlivePolicy.
      *
@@ -14405,10 +13340,9 @@ var KeepAlivePolicy = /** @class */ (function (_super) {
      * @param options -
      * @param keepAliveOptions -
      */
-    function KeepAlivePolicy(nextPolicy, options, keepAliveOptions) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.keepAliveOptions = keepAliveOptions;
-        return _this;
+    constructor(nextPolicy, options, keepAliveOptions) {
+        super(nextPolicy, options);
+        this.keepAliveOptions = keepAliveOptions;
     }
     /**
      * Sends out request.
@@ -14416,104 +13350,85 @@ var KeepAlivePolicy = /** @class */ (function (_super) {
      * @param request -
      * @returns
      */
-    KeepAlivePolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                request.keepAlive = this.keepAliveOptions.enable;
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return KeepAlivePolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        request.keepAlive = this.keepAliveOptions.enable;
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var createSpan = coreTracing.createSpanFunction({
+const createSpan = coreTracing.createSpanFunction({
     packagePrefix: "",
     namespace: ""
 });
-function tracingPolicy(tracingOptions) {
-    if (tracingOptions === void 0) { tracingOptions = {}; }
+function tracingPolicy(tracingOptions = {}) {
     return {
-        create: function (nextPolicy, options) {
+        create(nextPolicy, options) {
             return new TracingPolicy(nextPolicy, options, tracingOptions);
         }
     };
 }
-var TracingPolicy = /** @class */ (function (_super) {
-    tslib.__extends(TracingPolicy, _super);
-    function TracingPolicy(nextPolicy, options, tracingOptions) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.userAgent = tracingOptions.userAgent;
-        return _this;
+class TracingPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, tracingOptions) {
+        super(nextPolicy, options);
+        this.userAgent = tracingOptions.userAgent;
     }
-    TracingPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var path, span, spanContext, traceParentHeader, traceState, response, serviceRequestId, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!request.tracingContext) {
-                            return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-                        }
-                        path = URLBuilder.parse(request.url).getPath() || "/";
-                        span = createSpan(path, {
-                            tracingOptions: {
-                                spanOptions: tslib.__assign(tslib.__assign({}, request.spanOptions), { kind: coreTracing.SpanKind.CLIENT }),
-                                tracingContext: request.tracingContext
-                            }
-                        }).span;
-                        span.setAttributes({
-                            "http.method": request.method,
-                            "http.url": request.url,
-                            requestId: request.requestId
-                        });
-                        if (this.userAgent) {
-                            span.setAttribute("http.user_agent", this.userAgent);
-                        }
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, 4, 5]);
-                        spanContext = span.context();
-                        traceParentHeader = coreTracing.getTraceParentHeader(spanContext);
-                        if (traceParentHeader) {
-                            request.headers.set("traceparent", traceParentHeader);
-                            traceState = spanContext.traceState && spanContext.traceState.serialize();
-                            // if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent
-                            if (traceState) {
-                                request.headers.set("tracestate", traceState);
-                            }
-                        }
-                        return [4 /*yield*/, this._nextPolicy.sendRequest(request)];
-                    case 2:
-                        response = _a.sent();
-                        span.setAttribute("http.status_code", response.status);
-                        serviceRequestId = response.headers.get("x-ms-request-id");
-                        if (serviceRequestId) {
-                            span.setAttribute("serviceRequestId", serviceRequestId);
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.OK
-                        });
-                        return [2 /*return*/, response];
-                    case 3:
-                        err_1 = _a.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: err_1.message
-                        });
-                        span.setAttribute("http.status_code", err_1.statusCode);
-                        throw err_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
+    async sendRequest(request) {
+        if (!request.tracingContext) {
+            return this._nextPolicy.sendRequest(request);
+        }
+        // create a new span
+        const path = URLBuilder.parse(request.url).getPath() || "/";
+        const { span } = createSpan(path, {
+            tracingOptions: {
+                spanOptions: Object.assign(Object.assign({}, request.spanOptions), { kind: coreTracing.SpanKind.CLIENT }),
+                tracingContext: request.tracingContext
+            }
         });
-    };
-    return TracingPolicy;
-}(BaseRequestPolicy));
+        span.setAttributes({
+            "http.method": request.method,
+            "http.url": request.url,
+            requestId: request.requestId
+        });
+        if (this.userAgent) {
+            span.setAttribute("http.user_agent", this.userAgent);
+        }
+        try {
+            // set headers
+            const spanContext = span.spanContext();
+            const traceParentHeader = coreTracing.getTraceParentHeader(spanContext);
+            if (traceParentHeader && coreTracing.isSpanContextValid(spanContext)) {
+                request.headers.set("traceparent", traceParentHeader);
+                const traceState = spanContext.traceState && spanContext.traceState.serialize();
+                // if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent
+                if (traceState) {
+                    request.headers.set("tracestate", traceState);
+                }
+            }
+            const response = await this._nextPolicy.sendRequest(request);
+            span.setAttribute("http.status_code", response.status);
+            const serviceRequestId = response.headers.get("x-ms-request-id");
+            if (serviceRequestId) {
+                span.setAttribute("serviceRequestId", serviceRequestId);
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.OK
+            });
+            return response;
+        }
+        catch (err) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: err.message
+            });
+            span.setAttribute("http.status_code", err.statusCode);
+            throw err;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -14522,7 +13437,7 @@ var TracingPolicy = /** @class */ (function (_super) {
  */
 function disableResponseDecompressionPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new DisableResponseDecompressionPolicy(nextPolicy, options);
         }
     };
@@ -14531,8 +13446,7 @@ function disableResponseDecompressionPolicy() {
  * A policy to disable response decompression according to Accept-Encoding header
  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
  */
-var DisableResponseDecompressionPolicy = /** @class */ (function (_super) {
-    tslib.__extends(DisableResponseDecompressionPolicy, _super);
+class DisableResponseDecompressionPolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of DisableResponseDecompressionPolicy.
      *
@@ -14541,8 +13455,8 @@ var DisableResponseDecompressionPolicy = /** @class */ (function (_super) {
      */
     // The parent constructor is protected.
     /* eslint-disable-next-line @typescript-eslint/no-useless-constructor */
-    function DisableResponseDecompressionPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends out request.
@@ -14550,21 +13464,16 @@ var DisableResponseDecompressionPolicy = /** @class */ (function (_super) {
      * @param request -
      * @returns
      */
-    DisableResponseDecompressionPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                request.decompressResponse = false;
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return DisableResponseDecompressionPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        request.decompressResponse = false;
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function ndJsonPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new NdJsonPolicy(nextPolicy, options);
         }
     };
@@ -14572,37 +13481,30 @@ function ndJsonPolicy() {
 /**
  * NdJsonPolicy that formats a JSON array as newline-delimited JSON
  */
-var NdJsonPolicy = /** @class */ (function (_super) {
-    tslib.__extends(NdJsonPolicy, _super);
+class NdJsonPolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of KeepAlivePolicy.
      */
-    function NdJsonPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends a request.
      */
-    NdJsonPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var body;
-            return tslib.__generator(this, function (_a) {
-                // There currently isn't a good way to bypass the serializer
-                if (typeof request.body === "string" && request.body.startsWith("[")) {
-                    body = JSON.parse(request.body);
-                    if (Array.isArray(body)) {
-                        request.body = body.map(function (item) { return JSON.stringify(item) + "\n"; }).join("");
-                    }
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return NdJsonPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        // There currently isn't a good way to bypass the serializer
+        if (typeof request.body === "string" && request.body.startsWith("[")) {
+            const body = JSON.parse(request.body);
+            if (Array.isArray(body)) {
+                request.body = body.map((item) => JSON.stringify(item) + "\n").join("");
+            }
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var cachedHttpClient;
+let cachedHttpClient;
 function getCachedDefaultHttpClient() {
     if (!cachedHttpClient) {
         cachedHttpClient = new NodeFetchHttpClient();
@@ -14614,29 +13516,28 @@ function getCachedDefaultHttpClient() {
 /**
  * ServiceClient sends service requests and receives responses.
  */
-var ServiceClient = /** @class */ (function () {
+class ServiceClient {
     /**
      * The ServiceClient constructor
      * @param credentials - The credentials used for authentication with the service.
      * @param options - The service client options that govern the behavior of the client.
      */
-    function ServiceClient(credentials, 
+    constructor(credentials, 
     /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options */
     options) {
-        var _this = this;
         if (!options) {
             options = {};
         }
         this._withCredentials = options.withCredentials || false;
         this._httpClient = options.httpClient || getCachedDefaultHttpClient();
         this._requestPolicyOptions = new RequestPolicyOptions(options.httpPipelineLogger);
-        var requestPolicyFactories;
+        let requestPolicyFactories;
         if (Array.isArray(options.requestPolicyFactories)) {
             logger.info("ServiceClient: using custom request policies");
             requestPolicyFactories = options.requestPolicyFactories;
         }
         else {
-            var authPolicyFactory = undefined;
+            let authPolicyFactory = undefined;
             if (coreAuth.isTokenCredential(credentials)) {
                 logger.info("ServiceClient: creating bearer token authentication policy from provided credentials");
                 // Create a wrapped RequestPolicyFactory here so that we can provide the
@@ -14645,16 +13546,16 @@ var ServiceClient = /** @class */ (function () {
                 // implementations do not set baseUri until after ServiceClient's constructor
                 // is finished, leaving baseUri empty at the time when it is needed to
                 // build the correct scope name.
-                var wrappedPolicyFactory = function () {
-                    var bearerTokenPolicyFactory = undefined;
+                const wrappedPolicyFactory = () => {
+                    let bearerTokenPolicyFactory = undefined;
                     // eslint-disable-next-line @typescript-eslint/no-this-alias
-                    var serviceClient = _this;
-                    var serviceClientOptions = options;
+                    const serviceClient = this;
+                    const serviceClientOptions = options;
                     return {
-                        create: function (nextPolicy, createOptions) {
-                            var credentialScopes = getCredentialScopes(serviceClientOptions, serviceClient.baseUri);
+                        create(nextPolicy, createOptions) {
+                            const credentialScopes = getCredentialScopes(serviceClientOptions, serviceClient.baseUri);
                             if (!credentialScopes) {
-                                throw new Error("When using credential, the ServiceClient must contain a baseUri or a credentialScopes in ServiceClientOptions. Unable to create a bearerTokenAuthenticationPolicy");
+                                throw new Error(`When using credential, the ServiceClient must contain a baseUri or a credentialScopes in ServiceClientOptions. Unable to create a bearerTokenAuthenticationPolicy`);
                             }
                             if (bearerTokenPolicyFactory === undefined || bearerTokenPolicyFactory === null) {
                                 bearerTokenPolicyFactory = bearerTokenAuthenticationPolicy(credentials, credentialScopes);
@@ -14677,7 +13578,7 @@ var ServiceClient = /** @class */ (function () {
             if (options.requestPolicyFactories) {
                 // options.requestPolicyFactories can also be a function that manipulates
                 // the default requestPolicyFactories array
-                var newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);
+                const newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);
                 if (newRequestPolicyFactories) {
                     requestPolicyFactories = newRequestPolicyFactories;
                 }
@@ -14688,11 +13589,11 @@ var ServiceClient = /** @class */ (function () {
     /**
      * Send the provided httpRequest.
      */
-    ServiceClient.prototype.sendRequest = function (options) {
+    sendRequest(options) {
         if (options === null || options === undefined || typeof options !== "object") {
             throw new Error("options cannot be null or undefined and it must be of type object.");
         }
-        var httpRequest;
+        let httpRequest;
         try {
             if (isWebResourceLike(options)) {
                 options.validateRequestProperties();
@@ -14706,242 +13607,220 @@ var ServiceClient = /** @class */ (function () {
         catch (error) {
             return Promise.reject(error);
         }
-        var httpPipeline = this._httpClient;
+        let httpPipeline = this._httpClient;
         if (this._requestPolicyFactories && this._requestPolicyFactories.length > 0) {
-            for (var i = this._requestPolicyFactories.length - 1; i >= 0; --i) {
+            for (let i = this._requestPolicyFactories.length - 1; i >= 0; --i) {
                 httpPipeline = this._requestPolicyFactories[i].create(httpPipeline, this._requestPolicyOptions);
             }
         }
         return httpPipeline.sendRequest(httpRequest);
-    };
+    }
     /**
      * Send an HTTP request that is populated using the provided OperationSpec.
      * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.
      * @param operationSpec - The OperationSpec to use to populate the httpRequest.
      * @param callback - The callback to call when the response is received.
      */
-    ServiceClient.prototype.sendOperationRequest = function (operationArguments, operationSpec, callback) {
+    async sendOperationRequest(operationArguments, operationSpec, callback) {
         var _a;
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var serializerOptions, httpRequest, result, baseUri, requestUrl, _i, _b, urlParameter, urlParameterValue, _c, _d, queryParameter, queryParameterValue, index, item, index, contentType, _e, _f, headerParameter, headerValue, headerCollectionPrefix, _g, _h, key, options, customHeaderName, rawResponse, sendRequestError, error_1, error_2, cb;
-            return tslib.__generator(this, function (_j) {
-                switch (_j.label) {
-                    case 0:
-                        if (typeof operationArguments.options === "function") {
-                            callback = operationArguments.options;
-                            operationArguments.options = undefined;
-                        }
-                        serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
-                        httpRequest = new WebResource();
-                        _j.label = 1;
-                    case 1:
-                        _j.trys.push([1, 6, , 7]);
-                        baseUri = operationSpec.baseUrl || this.baseUri;
-                        if (!baseUri) {
-                            throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");
-                        }
-                        httpRequest.method = operationSpec.httpMethod;
-                        httpRequest.operationSpec = operationSpec;
-                        requestUrl = URLBuilder.parse(baseUri);
-                        if (operationSpec.path) {
-                            requestUrl.appendPath(operationSpec.path);
-                        }
-                        if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {
-                            for (_i = 0, _b = operationSpec.urlParameters; _i < _b.length; _i++) {
-                                urlParameter = _b[_i];
-                                urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);
-                                urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter), serializerOptions);
-                                if (!urlParameter.skipEncoding) {
-                                    urlParameterValue = encodeURIComponent(urlParameterValue);
+        if (typeof operationArguments.options === "function") {
+            callback = operationArguments.options;
+            operationArguments.options = undefined;
+        }
+        const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
+        const httpRequest = new WebResource();
+        let result;
+        try {
+            const baseUri = operationSpec.baseUrl || this.baseUri;
+            if (!baseUri) {
+                throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");
+            }
+            httpRequest.method = operationSpec.httpMethod;
+            httpRequest.operationSpec = operationSpec;
+            const requestUrl = URLBuilder.parse(baseUri);
+            if (operationSpec.path) {
+                requestUrl.appendPath(operationSpec.path);
+            }
+            if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {
+                for (const urlParameter of operationSpec.urlParameters) {
+                    let urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);
+                    urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter), serializerOptions);
+                    if (!urlParameter.skipEncoding) {
+                        urlParameterValue = encodeURIComponent(urlParameterValue);
+                    }
+                    requestUrl.replaceAll(`{${urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)}}`, urlParameterValue);
+                }
+            }
+            if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {
+                for (const queryParameter of operationSpec.queryParameters) {
+                    let queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);
+                    if (queryParameterValue !== undefined && queryParameterValue !== null) {
+                        queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter), serializerOptions);
+                        if (queryParameter.collectionFormat !== undefined &&
+                            queryParameter.collectionFormat !== null) {
+                            if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Multi) {
+                                if (queryParameterValue.length === 0) {
+                                    // The collection is empty, no need to try serializing the current queryParam
+                                    continue;
                                 }
-                                requestUrl.replaceAll("{" + (urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)) + "}", urlParameterValue);
-                            }
-                        }
-                        if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {
-                            for (_c = 0, _d = operationSpec.queryParameters; _c < _d.length; _c++) {
-                                queryParameter = _d[_c];
-                                queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);
-                                if (queryParameterValue !== undefined && queryParameterValue !== null) {
-                                    queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter), serializerOptions);
-                                    if (queryParameter.collectionFormat !== undefined &&
-                                        queryParameter.collectionFormat !== null) {
-                                        if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Multi) {
-                                            if (queryParameterValue.length === 0) {
-                                                // The collection is empty, no need to try serializing the current queryParam
-                                                continue;
-                                            }
-                                            else {
-                                                for (index in queryParameterValue) {
-                                                    item = queryParameterValue[index];
-                                                    queryParameterValue[index] =
-                                                        item === undefined || item === null ? "" : item.toString();
-                                                }
-                                            }
-                                        }
-                                        else if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Ssv ||
-                                            queryParameter.collectionFormat === exports.QueryCollectionFormat.Tsv) {
-                                            queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
-                                        }
-                                    }
-                                    if (!queryParameter.skipEncoding) {
-                                        if (Array.isArray(queryParameterValue)) {
-                                            for (index in queryParameterValue) {
-                                                if (queryParameterValue[index] !== undefined &&
-                                                    queryParameterValue[index] !== null) {
-                                                    queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);
-                                                }
-                                            }
-                                        }
-                                        else {
-                                            queryParameterValue = encodeURIComponent(queryParameterValue);
-                                        }
-                                    }
-                                    if (queryParameter.collectionFormat !== undefined &&
-                                        queryParameter.collectionFormat !== null &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Multi &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Ssv &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Tsv) {
-                                        queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
-                                    }
-                                    requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);
-                                }
-                            }
-                        }
-                        httpRequest.url = requestUrl.toString();
-                        contentType = operationSpec.contentType || this.requestContentType;
-                        if (contentType && operationSpec.requestBody) {
-                            httpRequest.headers.set("Content-Type", contentType);
-                        }
-                        if (operationSpec.headerParameters) {
-                            for (_e = 0, _f = operationSpec.headerParameters; _e < _f.length; _e++) {
-                                headerParameter = _f[_e];
-                                headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);
-                                if (headerValue !== undefined && headerValue !== null) {
-                                    headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter), serializerOptions);
-                                    headerCollectionPrefix = headerParameter.mapper
-                                        .headerCollectionPrefix;
-                                    if (headerCollectionPrefix) {
-                                        for (_g = 0, _h = Object.keys(headerValue); _g < _h.length; _g++) {
-                                            key = _h[_g];
-                                            httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);
-                                        }
-                                    }
-                                    else {
-                                        httpRequest.headers.set(headerParameter.mapper.serializedName ||
-                                            getPathStringFromParameter(headerParameter), headerValue);
+                                else {
+                                    for (const index in queryParameterValue) {
+                                        const item = queryParameterValue[index];
+                                        queryParameterValue[index] =
+                                            item === undefined || item === null ? "" : item.toString();
                                     }
                                 }
                             }
+                            else if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Ssv ||
+                                queryParameter.collectionFormat === exports.QueryCollectionFormat.Tsv) {
+                                queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
+                            }
                         }
-                        options = operationArguments.options;
-                        if (options) {
-                            if (options.customHeaders) {
-                                for (customHeaderName in options.customHeaders) {
-                                    httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);
+                        if (!queryParameter.skipEncoding) {
+                            if (Array.isArray(queryParameterValue)) {
+                                for (const index in queryParameterValue) {
+                                    if (queryParameterValue[index] !== undefined &&
+                                        queryParameterValue[index] !== null) {
+                                        queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);
+                                    }
                                 }
                             }
-                            if (options.abortSignal) {
-                                httpRequest.abortSignal = options.abortSignal;
-                            }
-                            if (options.timeout) {
-                                httpRequest.timeout = options.timeout;
-                            }
-                            if (options.onUploadProgress) {
-                                httpRequest.onUploadProgress = options.onUploadProgress;
-                            }
-                            if (options.onDownloadProgress) {
-                                httpRequest.onDownloadProgress = options.onDownloadProgress;
-                            }
-                            if (options.spanOptions) {
-                                httpRequest.spanOptions = options.spanOptions;
-                            }
-                            if (options.tracingContext) {
-                                httpRequest.tracingContext = options.tracingContext;
-                            }
-                            if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {
-                                httpRequest.shouldDeserialize = options.shouldDeserialize;
+                            else {
+                                queryParameterValue = encodeURIComponent(queryParameterValue);
                             }
                         }
-                        httpRequest.withCredentials = this._withCredentials;
-                        serializeRequestBody(this, httpRequest, operationArguments, operationSpec);
-                        if (httpRequest.streamResponseStatusCodes === undefined) {
-                            httpRequest.streamResponseStatusCodes = getStreamResponseStatusCodes(operationSpec);
+                        if (queryParameter.collectionFormat !== undefined &&
+                            queryParameter.collectionFormat !== null &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Multi &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Ssv &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Tsv) {
+                            queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
                         }
-                        rawResponse = void 0;
-                        sendRequestError = void 0;
-                        _j.label = 2;
-                    case 2:
-                        _j.trys.push([2, 4, , 5]);
-                        return [4 /*yield*/, this.sendRequest(httpRequest)];
-                    case 3:
-                        rawResponse = _j.sent();
-                        return [3 /*break*/, 5];
-                    case 4:
-                        error_1 = _j.sent();
-                        sendRequestError = error_1;
-                        return [3 /*break*/, 5];
-                    case 5:
-                        if (sendRequestError) {
-                            if (sendRequestError.response) {
-                                sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||
-                                    operationSpec.responses["default"]);
+                        requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);
+                    }
+                }
+            }
+            httpRequest.url = requestUrl.toString();
+            const contentType = operationSpec.contentType || this.requestContentType;
+            if (contentType && operationSpec.requestBody) {
+                httpRequest.headers.set("Content-Type", contentType);
+            }
+            if (operationSpec.headerParameters) {
+                for (const headerParameter of operationSpec.headerParameters) {
+                    let headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);
+                    if (headerValue !== undefined && headerValue !== null) {
+                        headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter), serializerOptions);
+                        const headerCollectionPrefix = headerParameter.mapper
+                            .headerCollectionPrefix;
+                        if (headerCollectionPrefix) {
+                            for (const key of Object.keys(headerValue)) {
+                                httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);
                             }
-                            result = Promise.reject(sendRequestError);
                         }
                         else {
-                            result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));
+                            httpRequest.headers.set(headerParameter.mapper.serializedName ||
+                                getPathStringFromParameter(headerParameter), headerValue);
                         }
-                        return [3 /*break*/, 7];
-                    case 6:
-                        error_2 = _j.sent();
-                        result = Promise.reject(error_2);
-                        return [3 /*break*/, 7];
-                    case 7:
-                        cb = callback;
-                        if (cb) {
-                            result
-                                .then(function (res) { return cb(null, res._response.parsedBody, res._response.request, res._response); })
-                                .catch(function (err) { return cb(err); });
-                        }
-                        return [2 /*return*/, result];
+                    }
                 }
-            });
-        });
-    };
-    return ServiceClient;
-}());
+            }
+            const options = operationArguments.options;
+            if (options) {
+                if (options.customHeaders) {
+                    for (const customHeaderName in options.customHeaders) {
+                        httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);
+                    }
+                }
+                if (options.abortSignal) {
+                    httpRequest.abortSignal = options.abortSignal;
+                }
+                if (options.timeout) {
+                    httpRequest.timeout = options.timeout;
+                }
+                if (options.onUploadProgress) {
+                    httpRequest.onUploadProgress = options.onUploadProgress;
+                }
+                if (options.onDownloadProgress) {
+                    httpRequest.onDownloadProgress = options.onDownloadProgress;
+                }
+                if (options.spanOptions) {
+                    httpRequest.spanOptions = options.spanOptions;
+                }
+                if (options.tracingContext) {
+                    httpRequest.tracingContext = options.tracingContext;
+                }
+                if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {
+                    httpRequest.shouldDeserialize = options.shouldDeserialize;
+                }
+            }
+            httpRequest.withCredentials = this._withCredentials;
+            serializeRequestBody(this, httpRequest, operationArguments, operationSpec);
+            if (httpRequest.streamResponseStatusCodes === undefined) {
+                httpRequest.streamResponseStatusCodes = getStreamResponseStatusCodes(operationSpec);
+            }
+            let rawResponse;
+            let sendRequestError;
+            try {
+                rawResponse = await this.sendRequest(httpRequest);
+            }
+            catch (error) {
+                sendRequestError = error;
+            }
+            if (sendRequestError) {
+                if (sendRequestError.response) {
+                    sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||
+                        operationSpec.responses["default"]);
+                }
+                result = Promise.reject(sendRequestError);
+            }
+            else {
+                result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));
+            }
+        }
+        catch (error) {
+            result = Promise.reject(error);
+        }
+        const cb = callback;
+        if (cb) {
+            result
+                .then((res) => cb(null, res._response.parsedBody, res._response.request, res._response))
+                .catch((err) => cb(err));
+        }
+        return result;
+    }
+}
 function serializeRequestBody(serviceClient, httpRequest, operationArguments, operationSpec) {
     var _a, _b, _c, _d, _e, _f;
-    var serializerOptions = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions) !== null && _b !== void 0 ? _b : {};
-    var updatedOptions = {
+    const serializerOptions = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions) !== null && _b !== void 0 ? _b : {};
+    const updatedOptions = {
         rootName: (_c = serializerOptions.rootName) !== null && _c !== void 0 ? _c : "",
         includeRoot: (_d = serializerOptions.includeRoot) !== null && _d !== void 0 ? _d : false,
         xmlCharKey: (_e = serializerOptions.xmlCharKey) !== null && _e !== void 0 ? _e : XML_CHARKEY
     };
-    var xmlCharKey = serializerOptions.xmlCharKey;
+    const xmlCharKey = serializerOptions.xmlCharKey;
     if (operationSpec.requestBody && operationSpec.requestBody.mapper) {
         httpRequest.body = getOperationArgumentValueFromParameter(serviceClient, operationArguments, operationSpec.requestBody, operationSpec.serializer);
-        var bodyMapper = operationSpec.requestBody.mapper;
-        var required = bodyMapper.required, xmlName = bodyMapper.xmlName, xmlElementName = bodyMapper.xmlElementName, serializedName = bodyMapper.serializedName, xmlNamespace = bodyMapper.xmlNamespace, xmlNamespacePrefix = bodyMapper.xmlNamespacePrefix;
-        var typeName = bodyMapper.type.name;
+        const bodyMapper = operationSpec.requestBody.mapper;
+        const { required, xmlName, xmlElementName, serializedName, xmlNamespace, xmlNamespacePrefix } = bodyMapper;
+        const typeName = bodyMapper.type.name;
         try {
             if ((httpRequest.body !== undefined && httpRequest.body !== null) || required) {
-                var requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
+                const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
                 httpRequest.body = operationSpec.serializer.serialize(bodyMapper, httpRequest.body, requestBodyParameterPathString, updatedOptions);
-                var isStream = typeName === MapperType.Stream;
+                const isStream = typeName === MapperType.Stream;
                 if (operationSpec.isXML) {
-                    var xmlnsKey = xmlNamespacePrefix ? "xmlns:" + xmlNamespacePrefix : "xmlns";
-                    var value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body, updatedOptions);
+                    const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns";
+                    const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body, updatedOptions);
                     if (typeName === MapperType.Sequence) {
                         httpRequest.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), {
                             rootName: xmlName || serializedName,
-                            xmlCharKey: xmlCharKey
+                            xmlCharKey
                         });
                     }
                     else if (!isStream) {
                         httpRequest.body = stringifyXML(value, {
                             rootName: xmlName || serializedName,
-                            xmlCharKey: xmlCharKey
+                            xmlCharKey
                         });
                     }
                 }
@@ -14957,16 +13836,15 @@ function serializeRequestBody(serviceClient, httpRequest, operationArguments, op
             }
         }
         catch (error) {
-            throw new Error("Error \"" + error.message + "\" occurred in serializing the payload - " + JSON.stringify(serializedName, undefined, "  ") + ".");
+            throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, "  ")}.`);
         }
     }
     else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {
         httpRequest.formData = {};
-        for (var _i = 0, _g = operationSpec.formDataParameters; _i < _g.length; _i++) {
-            var formDataParameter = _g[_i];
-            var formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);
+        for (const formDataParameter of operationSpec.formDataParameters) {
+            const formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);
             if (formDataParameterValue !== undefined && formDataParameterValue !== null) {
-                var formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
+                const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
                 httpRequest.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);
             }
         }
@@ -14976,19 +13854,18 @@ function serializeRequestBody(serviceClient, httpRequest, operationArguments, op
  * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself
  */
 function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {
-    var _a;
     // Composite and Sequence schemas already got their root namespace set during serialization
     // We just need to add xmlns to the other schema types
     if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) {
-        var result = {};
+        const result = {};
         result[options.xmlCharKey] = serializedValue;
-        result[XML_ATTRKEY] = (_a = {}, _a[xmlnsKey] = xmlNamespace, _a);
+        result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };
         return result;
     }
     return serializedValue;
 }
 function getValueOrFunctionResult(value, defaultValueCreator) {
-    var result;
+    let result;
     if (typeof value === "string") {
         result = value;
     }
@@ -15001,15 +13878,15 @@ function getValueOrFunctionResult(value, defaultValueCreator) {
     return result;
 }
 function createDefaultRequestPolicyFactories(authPolicyFactory, options) {
-    var factories = [];
+    const factories = [];
     if (options.generateClientRequestIdHeader) {
         factories.push(generateClientRequestIdPolicy(options.clientRequestIdHeaderName));
     }
     if (authPolicyFactory) {
         factories.push(authPolicyFactory);
     }
-    var userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);
-    var userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);
+    const userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);
+    const userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);
     if (userAgentHeaderName && userAgentHeaderValue) {
         factories.push(userAgentPolicy({ key: userAgentHeaderName, value: userAgentHeaderValue }));
     }
@@ -15021,37 +13898,37 @@ function createDefaultRequestPolicyFactories(authPolicyFactory, options) {
         factories.push(throttlingRetryPolicy());
     }
     factories.push(deserializationPolicy(options.deserializationContentTypes));
-    {
+    if (isNode) {
         factories.push(proxyPolicy(options.proxySettings));
     }
     factories.push(logPolicy({ logger: logger.info }));
     return factories;
 }
 function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {
-    var requestPolicyFactories = [];
+    const requestPolicyFactories = [];
     if (pipelineOptions.sendStreamingJson) {
         requestPolicyFactories.push(ndJsonPolicy());
     }
-    var userAgentValue = undefined;
+    let userAgentValue = undefined;
     if (pipelineOptions.userAgentOptions && pipelineOptions.userAgentOptions.userAgentPrefix) {
-        var userAgentInfo = [];
+        const userAgentInfo = [];
         userAgentInfo.push(pipelineOptions.userAgentOptions.userAgentPrefix);
         // Add the default user agent value if it isn't already specified
         // by the userAgentPrefix option.
-        var defaultUserAgentInfo = getDefaultUserAgentValue();
+        const defaultUserAgentInfo = getDefaultUserAgentValue();
         if (userAgentInfo.indexOf(defaultUserAgentInfo) === -1) {
             userAgentInfo.push(defaultUserAgentInfo);
         }
         userAgentValue = userAgentInfo.join(" ");
     }
-    var keepAliveOptions = tslib.__assign(tslib.__assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);
-    var retryOptions = tslib.__assign(tslib.__assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);
-    var redirectOptions = tslib.__assign(tslib.__assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);
-    {
+    const keepAliveOptions = Object.assign(Object.assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);
+    const retryOptions = Object.assign(Object.assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);
+    const redirectOptions = Object.assign(Object.assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);
+    if (isNode) {
         requestPolicyFactories.push(proxyPolicy(pipelineOptions.proxyOptions));
     }
-    var deserializationOptions = tslib.__assign(tslib.__assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);
-    var loggingOptions = tslib.__assign({}, pipelineOptions.loggingOptions);
+    const deserializationOptions = Object.assign(Object.assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);
+    const loggingOptions = Object.assign({}, pipelineOptions.loggingOptions);
     requestPolicyFactories.push(tracingPolicy({ userAgent: userAgentValue }), keepAlivePolicy(keepAliveOptions), userAgentPolicy({ value: userAgentValue }), generateClientRequestIdPolicy(), deserializationPolicy(deserializationOptions.expectedContentTypes), throttlingRetryPolicy(), systemErrorRetryPolicy(), exponentialRetryPolicy(retryOptions.maxRetries, retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs));
     if (redirectOptions.handleRedirects) {
         requestPolicyFactories.push(redirectPolicy(redirectOptions.maxRetries));
@@ -15065,7 +13942,7 @@ function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {
     }
     return {
         httpClient: pipelineOptions.httpClient,
-        requestPolicyFactories: requestPolicyFactories
+        requestPolicyFactories
     };
 }
 function getOperationArgumentValueFromParameter(serviceClient, operationArguments, parameter, serializer) {
@@ -15073,22 +13950,22 @@ function getOperationArgumentValueFromParameter(serviceClient, operationArgument
 }
 function getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameterPath, parameterMapper, serializer) {
     var _a;
-    var value;
+    let value;
     if (typeof parameterPath === "string") {
         parameterPath = [parameterPath];
     }
-    var serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
+    const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
     if (Array.isArray(parameterPath)) {
         if (parameterPath.length > 0) {
             if (parameterMapper.isConstant) {
                 value = parameterMapper.defaultValue;
             }
             else {
-                var propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);
+                let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);
                 if (!propertySearchResult.propertyFound) {
                     propertySearchResult = getPropertyFromParameterPath(serviceClient, parameterPath);
                 }
-                var useDefaultValue = false;
+                let useDefaultValue = false;
                 if (!propertySearchResult.propertyFound) {
                     useDefaultValue =
                         parameterMapper.required ||
@@ -15097,7 +13974,7 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
                 value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;
             }
             // Serialize just for validation purposes.
-            var parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);
+            const parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);
             serializer.serialize(parameterMapper, value, parameterPathString, serializerOptions);
         }
     }
@@ -15105,12 +13982,12 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
         if (parameterMapper.required) {
             value = {};
         }
-        for (var propertyName in parameterPath) {
-            var propertyMapper = parameterMapper.type.modelProperties[propertyName];
-            var propertyPath = parameterPath[propertyName];
-            var propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);
+        for (const propertyName in parameterPath) {
+            const propertyMapper = parameterMapper.type.modelProperties[propertyName];
+            const propertyPath = parameterPath[propertyName];
+            const propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);
             // Serialize just for validation purposes.
-            var propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);
+            const propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);
             serializer.serialize(propertyMapper, propertyValue, propertyPathString, serializerOptions);
             if (propertyValue !== undefined && propertyValue !== null) {
                 if (!value) {
@@ -15123,10 +14000,10 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
     return value;
 }
 function getPropertyFromParameterPath(parent, parameterPath) {
-    var result = { propertyFound: false };
-    var i = 0;
+    const result = { propertyFound: false };
+    let i = 0;
     for (; i < parameterPath.length; ++i) {
-        var parameterPathPart = parameterPath[i];
+        const parameterPathPart = parameterPath[i];
         // Make sure to check inherited properties too, so don't use hasOwnProperty().
         if (parent !== undefined && parent !== null && parameterPathPart in parent) {
             parent = parent[parameterPathPart];
@@ -15142,31 +14019,29 @@ function getPropertyFromParameterPath(parent, parameterPath) {
     return result;
 }
 function flattenResponse(_response, responseSpec) {
-    var parsedHeaders = _response.parsedHeaders;
-    var bodyMapper = responseSpec && responseSpec.bodyMapper;
-    var addOperationResponse = function (obj) {
+    const parsedHeaders = _response.parsedHeaders;
+    const bodyMapper = responseSpec && responseSpec.bodyMapper;
+    const addOperationResponse = (obj) => {
         return Object.defineProperty(obj, "_response", {
             value: _response
         });
     };
     if (bodyMapper) {
-        var typeName = bodyMapper.type.name;
+        const typeName = bodyMapper.type.name;
         if (typeName === "Stream") {
-            return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));
+            return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));
         }
-        var modelProperties_1 = (typeName === "Composite" && bodyMapper.type.modelProperties) || {};
-        var isPageableResponse = Object.keys(modelProperties_1).some(function (k) { return modelProperties_1[k].serializedName === ""; });
+        const modelProperties = (typeName === "Composite" && bodyMapper.type.modelProperties) || {};
+        const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === "");
         if (typeName === "Sequence" || isPageableResponse) {
-            var arrayResponse = tslib.__spreadArray([], (_response.parsedBody || []));
-            for (var _i = 0, _a = Object.keys(modelProperties_1); _i < _a.length; _i++) {
-                var key = _a[_i];
-                if (modelProperties_1[key].serializedName) {
+            const arrayResponse = [...(_response.parsedBody || [])];
+            for (const key of Object.keys(modelProperties)) {
+                if (modelProperties[key].serializedName) {
                     arrayResponse[key] = _response.parsedBody[key];
                 }
             }
             if (parsedHeaders) {
-                for (var _b = 0, _c = Object.keys(parsedHeaders); _b < _c.length; _b++) {
-                    var key = _c[_b];
+                for (const key of Object.keys(parsedHeaders)) {
                     arrayResponse[key] = parsedHeaders[key];
                 }
             }
@@ -15174,26 +14049,26 @@ function flattenResponse(_response, responseSpec) {
             return arrayResponse;
         }
         if (typeName === "Composite" || typeName === "Dictionary") {
-            return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
+            return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));
         }
     }
     if (bodyMapper ||
         _response.request.method === "HEAD" ||
         isPrimitiveType(_response.parsedBody)) {
         // primitive body types and HEAD booleans
-        return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { body: _response.parsedBody }));
+        return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { body: _response.parsedBody }));
     }
-    return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
+    return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));
 }
 function getCredentialScopes(options, baseUri) {
     if (options === null || options === void 0 ? void 0 : options.credentialScopes) {
-        var scopes = options.credentialScopes;
+        const scopes = options.credentialScopes;
         return Array.isArray(scopes)
-            ? scopes.map(function (scope) { return new url.URL(scope).toString(); })
+            ? scopes.map((scope) => new url.URL(scope).toString())
             : new url.URL(scopes).toString();
     }
     if (baseUri) {
-        return baseUri + "/.default";
+        return `${baseUri}/.default`;
     }
     return undefined;
 }
@@ -15217,7 +14092,7 @@ function createSpanFunction(args) {
 /**
  * Defines the default token refresh buffer duration.
  */
-var TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
+const TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
 /**
  * Provides an {@link AccessTokenCache} implementation which clears
  * the cached {@link AccessToken}'s after the expiresOnTimestamp has
@@ -15225,38 +14100,36 @@ var TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
  *
  * @deprecated No longer used in the bearer authorization policy.
  */
-var ExpiringAccessTokenCache = /** @class */ (function () {
+class ExpiringAccessTokenCache {
     /**
      * Constructs an instance of {@link ExpiringAccessTokenCache} with
      * an optional expiration buffer time.
      */
-    function ExpiringAccessTokenCache(tokenRefreshBufferMs) {
-        if (tokenRefreshBufferMs === void 0) { tokenRefreshBufferMs = TokenRefreshBufferMs; }
+    constructor(tokenRefreshBufferMs = TokenRefreshBufferMs) {
         this.cachedToken = undefined;
         this.tokenRefreshBufferMs = tokenRefreshBufferMs;
     }
-    ExpiringAccessTokenCache.prototype.setCachedToken = function (accessToken) {
+    setCachedToken(accessToken) {
         this.cachedToken = accessToken;
-    };
-    ExpiringAccessTokenCache.prototype.getCachedToken = function () {
+    }
+    getCachedToken() {
         if (this.cachedToken &&
             Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) {
             this.cachedToken = undefined;
         }
         return this.cachedToken;
-    };
-    return ExpiringAccessTokenCache;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Helps the core-http token authentication policies with requesting a new token if we're not currently waiting for a new token.
  *
  * @deprecated No longer used in the bearer authorization policy.
  */
-var AccessTokenRefresher = /** @class */ (function () {
-    function AccessTokenRefresher(credential, scopes, requiredMillisecondsBeforeNewRefresh) {
-        if (requiredMillisecondsBeforeNewRefresh === void 0) { requiredMillisecondsBeforeNewRefresh = 30000; }
+class AccessTokenRefresher {
+    constructor(credential, scopes, requiredMillisecondsBeforeNewRefresh = 30000) {
         this.credential = credential;
         this.scopes = scopes;
         this.requiredMillisecondsBeforeNewRefresh = requiredMillisecondsBeforeNewRefresh;
@@ -15266,49 +14139,38 @@ var AccessTokenRefresher = /** @class */ (function () {
      * Returns true if the required milliseconds(defaulted to 30000) have been passed signifying
      * that we are ready for a new refresh.
      */
-    AccessTokenRefresher.prototype.isReady = function () {
+    isReady() {
         // We're only ready for a new refresh if the required milliseconds have passed.
         return (!this.lastCalled || Date.now() - this.lastCalled > this.requiredMillisecondsBeforeNewRefresh);
-    };
+    }
     /**
      * Stores the time in which it is called,
      * then requests a new token,
      * then sets this.promise to undefined,
      * then returns the token.
      */
-    AccessTokenRefresher.prototype.getToken = function (options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var token;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        this.lastCalled = Date.now();
-                        return [4 /*yield*/, this.credential.getToken(this.scopes, options)];
-                    case 1:
-                        token = _a.sent();
-                        this.promise = undefined;
-                        return [2 /*return*/, token || undefined];
-                }
-            });
-        });
-    };
+    async getToken(options) {
+        this.lastCalled = Date.now();
+        const token = await this.credential.getToken(this.scopes, options);
+        this.promise = undefined;
+        return token || undefined;
+    }
     /**
      * Requests a new token if we're not currently waiting for a new token.
      * Returns null if the required time between each call hasn't been reached.
      */
-    AccessTokenRefresher.prototype.refresh = function (options) {
+    refresh(options) {
         if (!this.promise) {
             this.promise = this.getToken(options);
         }
         return this.promise;
-    };
-    return AccessTokenRefresher;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var HeaderConstants = Constants.HeaderConstants;
-var DEFAULT_AUTHORIZATION_SCHEME = "Basic";
-var BasicAuthenticationCredentials = /** @class */ (function () {
+const HeaderConstants = Constants.HeaderConstants;
+const DEFAULT_AUTHORIZATION_SCHEME = "Basic";
+class BasicAuthenticationCredentials {
     /**
      * Creates a new BasicAuthenticationCredentials object.
      *
@@ -15316,8 +14178,7 @@ var BasicAuthenticationCredentials = /** @class */ (function () {
      * @param password - Password.
      * @param authorizationScheme - The authorization scheme.
      */
-    function BasicAuthenticationCredentials(userName, password, authorizationScheme) {
-        if (authorizationScheme === void 0) { authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME; }
+    constructor(userName, password, authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME) {
         this.authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME;
         if (userName === null || userName === undefined || typeof userName.valueOf() !== "string") {
             throw new Error("userName cannot be null or undefined and must be of type string.");
@@ -15335,28 +14196,27 @@ var BasicAuthenticationCredentials = /** @class */ (function () {
      * @param webResource - The WebResourceLike to be signed.
      * @returns The signed request object.
      */
-    BasicAuthenticationCredentials.prototype.signRequest = function (webResource) {
-        var credentials = this.userName + ":" + this.password;
-        var encodedCredentials = this.authorizationScheme + " " + encodeString(credentials);
+    signRequest(webResource) {
+        const credentials = `${this.userName}:${this.password}`;
+        const encodedCredentials = `${this.authorizationScheme} ${encodeString(credentials)}`;
         if (!webResource.headers)
             webResource.headers = new HttpHeaders();
         webResource.headers.set(HeaderConstants.AUTHORIZATION, encodedCredentials);
         return Promise.resolve(webResource);
-    };
-    return BasicAuthenticationCredentials;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Authenticates to a service using an API key.
  */
-var ApiKeyCredentials = /** @class */ (function () {
+class ApiKeyCredentials {
     /**
      * @param options - Specifies the options to be provided for auth. Either header or query needs to be provided.
      */
-    function ApiKeyCredentials(options) {
+    constructor(options) {
         if (!options || (options && !options.inHeader && !options.inQuery)) {
-            throw new Error("options cannot be null or undefined. Either \"inHeader\" or \"inQuery\" property of the options object needs to be provided.");
+            throw new Error(`options cannot be null or undefined. Either "inHeader" or "inQuery" property of the options object needs to be provided.`);
         }
         this.inHeader = options.inHeader;
         this.inQuery = options.inQuery;
@@ -15367,60 +14227,55 @@ var ApiKeyCredentials = /** @class */ (function () {
      * @param webResource - The WebResourceLike to be signed.
      * @returns The signed request object.
      */
-    ApiKeyCredentials.prototype.signRequest = function (webResource) {
+    signRequest(webResource) {
         if (!webResource) {
-            return Promise.reject(new Error("webResource cannot be null or undefined and must be of type \"object\"."));
+            return Promise.reject(new Error(`webResource cannot be null or undefined and must be of type "object".`));
         }
         if (this.inHeader) {
             if (!webResource.headers) {
                 webResource.headers = new HttpHeaders();
             }
-            for (var headerName in this.inHeader) {
+            for (const headerName in this.inHeader) {
                 webResource.headers.set(headerName, this.inHeader[headerName]);
             }
         }
         if (this.inQuery) {
             if (!webResource.url) {
-                return Promise.reject(new Error("url cannot be null in the request object."));
+                return Promise.reject(new Error(`url cannot be null in the request object.`));
             }
             if (webResource.url.indexOf("?") < 0) {
                 webResource.url += "?";
             }
-            for (var key in this.inQuery) {
+            for (const key in this.inQuery) {
                 if (!webResource.url.endsWith("?")) {
                     webResource.url += "&";
                 }
-                webResource.url += key + "=" + this.inQuery[key];
+                webResource.url += `${key}=${this.inQuery[key]}`;
             }
         }
         return Promise.resolve(webResource);
-    };
-    return ApiKeyCredentials;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var TopicCredentials = /** @class */ (function (_super) {
-    tslib.__extends(TopicCredentials, _super);
+class TopicCredentials extends ApiKeyCredentials {
     /**
      * Creates a new EventGrid TopicCredentials object.
      *
      * @param topicKey - The EventGrid topic key
      */
-    function TopicCredentials(topicKey) {
-        var _this = this;
+    constructor(topicKey) {
         if (!topicKey || (topicKey && typeof topicKey !== "string")) {
             throw new Error("topicKey cannot be null or undefined and must be of type string.");
         }
-        var options = {
+        const options = {
             inHeader: {
                 "aeg-sas-key": topicKey
             }
         };
-        _this = _super.call(this, options) || this;
-        return _this;
+        super(options);
     }
-    return TopicCredentials;
-}(ApiKeyCredentials));
+}
 
 Object.defineProperty(exports, 'isTokenCredential', {
     enumerable: true,
@@ -16009,7 +14864,92 @@ module.exports = require("assert");
 /* 359 */,
 /* 360 */,
 /* 361 */,
-/* 362 */,
+/* 362 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DiagComponentLogger = void 0;
+var global_utils_1 = __webpack_require__(525);
+/**
+ * Component Logger which is meant to be used as part of any component which
+ * will add automatically additional namespace in front of the log message.
+ * It will then forward all message to global diag logger
+ * @example
+ * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });
+ * cLogger.debug('test');
+ * // @opentelemetry/instrumentation-http test
+ */
+var DiagComponentLogger = /** @class */ (function () {
+    function DiagComponentLogger(props) {
+        this._namespace = props.namespace || 'DiagComponentLogger';
+    }
+    DiagComponentLogger.prototype.debug = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('debug', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.error = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('error', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.info = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('info', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.warn = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('warn', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.verbose = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('verbose', this._namespace, args);
+    };
+    return DiagComponentLogger;
+}());
+exports.DiagComponentLogger = DiagComponentLogger;
+function logProxy(funcName, namespace, args) {
+    var logger = global_utils_1.getGlobal('diag');
+    // shortcut if logger not set
+    if (!logger) {
+        return;
+    }
+    args.unshift(namespace);
+    return logger[funcName].apply(logger, args);
+}
+//# sourceMappingURL=ComponentLogger.js.map
+
+/***/ }),
 /* 363 */,
 /* 364 */,
 /* 365 */,
@@ -16049,7 +14989,7 @@ var util = __webpack_require__(669);
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var BlobServiceProperties = {
+const BlobServiceProperties = {
     serializedName: "BlobServiceProperties",
     xmlName: "StorageServiceProperties",
     type: {
@@ -16121,7 +15061,7 @@ var BlobServiceProperties = {
         }
     }
 };
-var Logging = {
+const Logging = {
     serializedName: "Logging",
     type: {
         name: "Composite",
@@ -16170,7 +15110,7 @@ var Logging = {
         }
     }
 };
-var RetentionPolicy = {
+const RetentionPolicy = {
     serializedName: "RetentionPolicy",
     type: {
         name: "Composite",
@@ -16197,7 +15137,7 @@ var RetentionPolicy = {
         }
     }
 };
-var Metrics = {
+const Metrics = {
     serializedName: "Metrics",
     type: {
         name: "Composite",
@@ -16236,7 +15176,7 @@ var Metrics = {
         }
     }
 };
-var CorsRule = {
+const CorsRule = {
     serializedName: "CorsRule",
     type: {
         name: "Composite",
@@ -16288,7 +15228,7 @@ var CorsRule = {
         }
     }
 };
-var StaticWebsite = {
+const StaticWebsite = {
     serializedName: "StaticWebsite",
     type: {
         name: "Composite",
@@ -16326,7 +15266,7 @@ var StaticWebsite = {
         }
     }
 };
-var StorageError = {
+const StorageError = {
     serializedName: "StorageError",
     type: {
         name: "Composite",
@@ -16349,7 +15289,7 @@ var StorageError = {
         }
     }
 };
-var BlobServiceStatistics = {
+const BlobServiceStatistics = {
     serializedName: "BlobServiceStatistics",
     xmlName: "StorageServiceStats",
     type: {
@@ -16367,7 +15307,7 @@ var BlobServiceStatistics = {
         }
     }
 };
-var GeoReplication = {
+const GeoReplication = {
     serializedName: "GeoReplication",
     type: {
         name: "Composite",
@@ -16393,7 +15333,7 @@ var GeoReplication = {
         }
     }
 };
-var ListContainersSegmentResponse = {
+const ListContainersSegmentResponse = {
     serializedName: "ListContainersSegmentResponse",
     xmlName: "EnumerationResults",
     type: {
@@ -16456,7 +15396,7 @@ var ListContainersSegmentResponse = {
         }
     }
 };
-var ContainerItem = {
+const ContainerItem = {
     serializedName: "ContainerItem",
     xmlName: "Container",
     type: {
@@ -16504,7 +15444,7 @@ var ContainerItem = {
         }
     }
 };
-var ContainerProperties = {
+const ContainerProperties = {
     serializedName: "ContainerProperties",
     type: {
         name: "Composite",
@@ -16609,7 +15549,7 @@ var ContainerProperties = {
         }
     }
 };
-var KeyInfo = {
+const KeyInfo = {
     serializedName: "KeyInfo",
     type: {
         name: "Composite",
@@ -16634,7 +15574,7 @@ var KeyInfo = {
         }
     }
 };
-var UserDelegationKey = {
+const UserDelegationKey = {
     serializedName: "UserDelegationKey",
     type: {
         name: "Composite",
@@ -16699,7 +15639,7 @@ var UserDelegationKey = {
         }
     }
 };
-var FilterBlobSegment = {
+const FilterBlobSegment = {
     serializedName: "FilterBlobSegment",
     xmlName: "EnumerationResults",
     type: {
@@ -16749,7 +15689,7 @@ var FilterBlobSegment = {
         }
     }
 };
-var FilterBlobItem = {
+const FilterBlobItem = {
     serializedName: "FilterBlobItem",
     xmlName: "Blob",
     type: {
@@ -16783,7 +15723,7 @@ var FilterBlobItem = {
         }
     }
 };
-var BlobTags = {
+const BlobTags = {
     serializedName: "BlobTags",
     xmlName: "Tags",
     type: {
@@ -16809,7 +15749,7 @@ var BlobTags = {
         }
     }
 };
-var BlobTag = {
+const BlobTag = {
     serializedName: "BlobTag",
     xmlName: "Tag",
     type: {
@@ -16835,7 +15775,7 @@ var BlobTag = {
         }
     }
 };
-var SignedIdentifier = {
+const SignedIdentifier = {
     serializedName: "SignedIdentifier",
     xmlName: "SignedIdentifier",
     type: {
@@ -16861,7 +15801,7 @@ var SignedIdentifier = {
         }
     }
 };
-var AccessPolicy = {
+const AccessPolicy = {
     serializedName: "AccessPolicy",
     type: {
         name: "Composite",
@@ -16891,7 +15831,7 @@ var AccessPolicy = {
         }
     }
 };
-var ListBlobsFlatSegmentResponse = {
+const ListBlobsFlatSegmentResponse = {
     serializedName: "ListBlobsFlatSegmentResponse",
     xmlName: "EnumerationResults",
     type: {
@@ -16955,7 +15895,7 @@ var ListBlobsFlatSegmentResponse = {
         }
     }
 };
-var BlobFlatListSegment = {
+const BlobFlatListSegment = {
     serializedName: "BlobFlatListSegment",
     xmlName: "Blobs",
     type: {
@@ -16980,7 +15920,7 @@ var BlobFlatListSegment = {
         }
     }
 };
-var BlobItemInternal = {
+const BlobItemInternal = {
     serializedName: "BlobItemInternal",
     xmlName: "Blob",
     type: {
@@ -17060,7 +16000,7 @@ var BlobItemInternal = {
         }
     }
 };
-var BlobPropertiesInternal = {
+const BlobPropertiesInternal = {
     serializedName: "BlobPropertiesInternal",
     xmlName: "Properties",
     type: {
@@ -17363,7 +16303,7 @@ var BlobPropertiesInternal = {
         }
     }
 };
-var ListBlobsHierarchySegmentResponse = {
+const ListBlobsHierarchySegmentResponse = {
     serializedName: "ListBlobsHierarchySegmentResponse",
     xmlName: "EnumerationResults",
     type: {
@@ -17434,7 +16374,7 @@ var ListBlobsHierarchySegmentResponse = {
         }
     }
 };
-var BlobHierarchyListSegment = {
+const BlobHierarchyListSegment = {
     serializedName: "BlobHierarchyListSegment",
     xmlName: "Blobs",
     type: {
@@ -17473,7 +16413,7 @@ var BlobHierarchyListSegment = {
         }
     }
 };
-var BlobPrefix = {
+const BlobPrefix = {
     serializedName: "BlobPrefix",
     type: {
         name: "Composite",
@@ -17490,7 +16430,7 @@ var BlobPrefix = {
         }
     }
 };
-var DataLakeStorageError = {
+const DataLakeStorageError = {
     serializedName: "DataLakeStorageError",
     type: {
         name: "Composite",
@@ -17507,7 +16447,7 @@ var DataLakeStorageError = {
         }
     }
 };
-var DataLakeStorageErrorError = {
+const DataLakeStorageErrorError = {
     serializedName: "DataLakeStorageErrorError",
     type: {
         name: "Composite",
@@ -17530,7 +16470,7 @@ var DataLakeStorageErrorError = {
         }
     }
 };
-var BlockLookupList = {
+const BlockLookupList = {
     serializedName: "BlockLookupList",
     xmlName: "BlockList",
     type: {
@@ -17579,7 +16519,7 @@ var BlockLookupList = {
         }
     }
 };
-var BlockList = {
+const BlockList = {
     serializedName: "BlockList",
     type: {
         name: "Composite",
@@ -17618,7 +16558,7 @@ var BlockList = {
         }
     }
 };
-var Block = {
+const Block = {
     serializedName: "Block",
     type: {
         name: "Composite",
@@ -17643,7 +16583,7 @@ var Block = {
         }
     }
 };
-var PageList = {
+const PageList = {
     serializedName: "PageList",
     type: {
         name: "Composite",
@@ -17680,7 +16620,7 @@ var PageList = {
         }
     }
 };
-var PageRange = {
+const PageRange = {
     serializedName: "PageRange",
     xmlName: "PageRange",
     type: {
@@ -17706,7 +16646,7 @@ var PageRange = {
         }
     }
 };
-var ClearRange = {
+const ClearRange = {
     serializedName: "ClearRange",
     xmlName: "ClearRange",
     type: {
@@ -17732,7 +16672,7 @@ var ClearRange = {
         }
     }
 };
-var QueryRequest = {
+const QueryRequest = {
     serializedName: "QueryRequest",
     xmlName: "QueryRequest",
     type: {
@@ -17774,7 +16714,7 @@ var QueryRequest = {
         }
     }
 };
-var QuerySerialization = {
+const QuerySerialization = {
     serializedName: "QuerySerialization",
     type: {
         name: "Composite",
@@ -17791,7 +16731,7 @@ var QuerySerialization = {
         }
     }
 };
-var QueryFormat = {
+const QueryFormat = {
     serializedName: "QueryFormat",
     type: {
         name: "Composite",
@@ -17832,7 +16772,7 @@ var QueryFormat = {
         }
     }
 };
-var DelimitedTextConfiguration = {
+const DelimitedTextConfiguration = {
     serializedName: "DelimitedTextConfiguration",
     xmlName: "DelimitedTextConfiguration",
     type: {
@@ -17882,7 +16822,7 @@ var DelimitedTextConfiguration = {
         }
     }
 };
-var JsonTextConfiguration = {
+const JsonTextConfiguration = {
     serializedName: "JsonTextConfiguration",
     xmlName: "JsonTextConfiguration",
     type: {
@@ -17900,7 +16840,7 @@ var JsonTextConfiguration = {
         }
     }
 };
-var ArrowConfiguration = {
+const ArrowConfiguration = {
     serializedName: "ArrowConfiguration",
     xmlName: "ArrowConfiguration",
     type: {
@@ -17926,7 +16866,7 @@ var ArrowConfiguration = {
         }
     }
 };
-var ArrowField = {
+const ArrowField = {
     serializedName: "ArrowField",
     xmlName: "Field",
     type: {
@@ -17965,7 +16905,7 @@ var ArrowField = {
         }
     }
 };
-var ServiceSetPropertiesHeaders = {
+const ServiceSetPropertiesHeaders = {
     serializedName: "Service_setPropertiesHeaders",
     type: {
         name: "Composite",
@@ -18002,7 +16942,7 @@ var ServiceSetPropertiesHeaders = {
         }
     }
 };
-var ServiceSetPropertiesExceptionHeaders = {
+const ServiceSetPropertiesExceptionHeaders = {
     serializedName: "Service_setPropertiesExceptionHeaders",
     type: {
         name: "Composite",
@@ -18018,7 +16958,7 @@ var ServiceSetPropertiesExceptionHeaders = {
         }
     }
 };
-var ServiceGetPropertiesHeaders = {
+const ServiceGetPropertiesHeaders = {
     serializedName: "Service_getPropertiesHeaders",
     type: {
         name: "Composite",
@@ -18055,7 +16995,7 @@ var ServiceGetPropertiesHeaders = {
         }
     }
 };
-var ServiceGetPropertiesExceptionHeaders = {
+const ServiceGetPropertiesExceptionHeaders = {
     serializedName: "Service_getPropertiesExceptionHeaders",
     type: {
         name: "Composite",
@@ -18071,7 +17011,7 @@ var ServiceGetPropertiesExceptionHeaders = {
         }
     }
 };
-var ServiceGetStatisticsHeaders = {
+const ServiceGetStatisticsHeaders = {
     serializedName: "Service_getStatisticsHeaders",
     type: {
         name: "Composite",
@@ -18115,7 +17055,7 @@ var ServiceGetStatisticsHeaders = {
         }
     }
 };
-var ServiceGetStatisticsExceptionHeaders = {
+const ServiceGetStatisticsExceptionHeaders = {
     serializedName: "Service_getStatisticsExceptionHeaders",
     type: {
         name: "Composite",
@@ -18131,7 +17071,7 @@ var ServiceGetStatisticsExceptionHeaders = {
         }
     }
 };
-var ServiceListContainersSegmentHeaders = {
+const ServiceListContainersSegmentHeaders = {
     serializedName: "Service_listContainersSegmentHeaders",
     type: {
         name: "Composite",
@@ -18168,7 +17108,7 @@ var ServiceListContainersSegmentHeaders = {
         }
     }
 };
-var ServiceListContainersSegmentExceptionHeaders = {
+const ServiceListContainersSegmentExceptionHeaders = {
     serializedName: "Service_listContainersSegmentExceptionHeaders",
     type: {
         name: "Composite",
@@ -18184,7 +17124,7 @@ var ServiceListContainersSegmentExceptionHeaders = {
         }
     }
 };
-var ServiceGetUserDelegationKeyHeaders = {
+const ServiceGetUserDelegationKeyHeaders = {
     serializedName: "Service_getUserDelegationKeyHeaders",
     type: {
         name: "Composite",
@@ -18228,7 +17168,7 @@ var ServiceGetUserDelegationKeyHeaders = {
         }
     }
 };
-var ServiceGetUserDelegationKeyExceptionHeaders = {
+const ServiceGetUserDelegationKeyExceptionHeaders = {
     serializedName: "Service_getUserDelegationKeyExceptionHeaders",
     type: {
         name: "Composite",
@@ -18244,7 +17184,7 @@ var ServiceGetUserDelegationKeyExceptionHeaders = {
         }
     }
 };
-var ServiceGetAccountInfoHeaders = {
+const ServiceGetAccountInfoHeaders = {
     serializedName: "Service_getAccountInfoHeaders",
     type: {
         name: "Composite",
@@ -18323,7 +17263,7 @@ var ServiceGetAccountInfoHeaders = {
         }
     }
 };
-var ServiceGetAccountInfoExceptionHeaders = {
+const ServiceGetAccountInfoExceptionHeaders = {
     serializedName: "Service_getAccountInfoExceptionHeaders",
     type: {
         name: "Composite",
@@ -18339,7 +17279,7 @@ var ServiceGetAccountInfoExceptionHeaders = {
         }
     }
 };
-var ServiceSubmitBatchHeaders = {
+const ServiceSubmitBatchHeaders = {
     serializedName: "Service_submitBatchHeaders",
     type: {
         name: "Composite",
@@ -18383,7 +17323,7 @@ var ServiceSubmitBatchHeaders = {
         }
     }
 };
-var ServiceSubmitBatchExceptionHeaders = {
+const ServiceSubmitBatchExceptionHeaders = {
     serializedName: "Service_submitBatchExceptionHeaders",
     type: {
         name: "Composite",
@@ -18399,7 +17339,7 @@ var ServiceSubmitBatchExceptionHeaders = {
         }
     }
 };
-var ServiceFilterBlobsHeaders = {
+const ServiceFilterBlobsHeaders = {
     serializedName: "Service_filterBlobsHeaders",
     type: {
         name: "Composite",
@@ -18443,7 +17383,7 @@ var ServiceFilterBlobsHeaders = {
         }
     }
 };
-var ServiceFilterBlobsExceptionHeaders = {
+const ServiceFilterBlobsExceptionHeaders = {
     serializedName: "Service_filterBlobsExceptionHeaders",
     type: {
         name: "Composite",
@@ -18459,7 +17399,7 @@ var ServiceFilterBlobsExceptionHeaders = {
         }
     }
 };
-var ContainerCreateHeaders = {
+const ContainerCreateHeaders = {
     serializedName: "Container_createHeaders",
     type: {
         name: "Composite",
@@ -18517,7 +17457,7 @@ var ContainerCreateHeaders = {
         }
     }
 };
-var ContainerCreateExceptionHeaders = {
+const ContainerCreateExceptionHeaders = {
     serializedName: "Container_createExceptionHeaders",
     type: {
         name: "Composite",
@@ -18533,7 +17473,7 @@ var ContainerCreateExceptionHeaders = {
         }
     }
 };
-var ContainerGetPropertiesHeaders = {
+const ContainerGetPropertiesHeaders = {
     serializedName: "Container_getPropertiesHeaders",
     type: {
         name: "Composite",
@@ -18666,7 +17606,7 @@ var ContainerGetPropertiesHeaders = {
         }
     }
 };
-var ContainerGetPropertiesExceptionHeaders = {
+const ContainerGetPropertiesExceptionHeaders = {
     serializedName: "Container_getPropertiesExceptionHeaders",
     type: {
         name: "Composite",
@@ -18682,7 +17622,7 @@ var ContainerGetPropertiesExceptionHeaders = {
         }
     }
 };
-var ContainerDeleteHeaders = {
+const ContainerDeleteHeaders = {
     serializedName: "Container_deleteHeaders",
     type: {
         name: "Composite",
@@ -18726,7 +17666,7 @@ var ContainerDeleteHeaders = {
         }
     }
 };
-var ContainerDeleteExceptionHeaders = {
+const ContainerDeleteExceptionHeaders = {
     serializedName: "Container_deleteExceptionHeaders",
     type: {
         name: "Composite",
@@ -18742,7 +17682,7 @@ var ContainerDeleteExceptionHeaders = {
         }
     }
 };
-var ContainerSetMetadataHeaders = {
+const ContainerSetMetadataHeaders = {
     serializedName: "Container_setMetadataHeaders",
     type: {
         name: "Composite",
@@ -18800,7 +17740,7 @@ var ContainerSetMetadataHeaders = {
         }
     }
 };
-var ContainerSetMetadataExceptionHeaders = {
+const ContainerSetMetadataExceptionHeaders = {
     serializedName: "Container_setMetadataExceptionHeaders",
     type: {
         name: "Composite",
@@ -18816,7 +17756,7 @@ var ContainerSetMetadataExceptionHeaders = {
         }
     }
 };
-var ContainerGetAccessPolicyHeaders = {
+const ContainerGetAccessPolicyHeaders = {
     serializedName: "Container_getAccessPolicyHeaders",
     type: {
         name: "Composite",
@@ -18882,7 +17822,7 @@ var ContainerGetAccessPolicyHeaders = {
         }
     }
 };
-var ContainerGetAccessPolicyExceptionHeaders = {
+const ContainerGetAccessPolicyExceptionHeaders = {
     serializedName: "Container_getAccessPolicyExceptionHeaders",
     type: {
         name: "Composite",
@@ -18898,7 +17838,7 @@ var ContainerGetAccessPolicyExceptionHeaders = {
         }
     }
 };
-var ContainerSetAccessPolicyHeaders = {
+const ContainerSetAccessPolicyHeaders = {
     serializedName: "Container_setAccessPolicyHeaders",
     type: {
         name: "Composite",
@@ -18956,7 +17896,7 @@ var ContainerSetAccessPolicyHeaders = {
         }
     }
 };
-var ContainerSetAccessPolicyExceptionHeaders = {
+const ContainerSetAccessPolicyExceptionHeaders = {
     serializedName: "Container_setAccessPolicyExceptionHeaders",
     type: {
         name: "Composite",
@@ -18972,7 +17912,7 @@ var ContainerSetAccessPolicyExceptionHeaders = {
         }
     }
 };
-var ContainerRestoreHeaders = {
+const ContainerRestoreHeaders = {
     serializedName: "Container_restoreHeaders",
     type: {
         name: "Composite",
@@ -19016,7 +17956,7 @@ var ContainerRestoreHeaders = {
         }
     }
 };
-var ContainerRestoreExceptionHeaders = {
+const ContainerRestoreExceptionHeaders = {
     serializedName: "Container_restoreExceptionHeaders",
     type: {
         name: "Composite",
@@ -19032,7 +17972,7 @@ var ContainerRestoreExceptionHeaders = {
         }
     }
 };
-var ContainerRenameHeaders = {
+const ContainerRenameHeaders = {
     serializedName: "Container_renameHeaders",
     type: {
         name: "Composite",
@@ -19076,7 +18016,7 @@ var ContainerRenameHeaders = {
         }
     }
 };
-var ContainerRenameExceptionHeaders = {
+const ContainerRenameExceptionHeaders = {
     serializedName: "Container_renameExceptionHeaders",
     type: {
         name: "Composite",
@@ -19092,7 +18032,7 @@ var ContainerRenameExceptionHeaders = {
         }
     }
 };
-var ContainerSubmitBatchHeaders = {
+const ContainerSubmitBatchHeaders = {
     serializedName: "Container_submitBatchHeaders",
     type: {
         name: "Composite",
@@ -19122,7 +18062,7 @@ var ContainerSubmitBatchHeaders = {
         }
     }
 };
-var ContainerSubmitBatchExceptionHeaders = {
+const ContainerSubmitBatchExceptionHeaders = {
     serializedName: "Container_submitBatchExceptionHeaders",
     type: {
         name: "Composite",
@@ -19138,7 +18078,7 @@ var ContainerSubmitBatchExceptionHeaders = {
         }
     }
 };
-var ContainerAcquireLeaseHeaders = {
+const ContainerAcquireLeaseHeaders = {
     serializedName: "Container_acquireLeaseHeaders",
     type: {
         name: "Composite",
@@ -19196,7 +18136,7 @@ var ContainerAcquireLeaseHeaders = {
         }
     }
 };
-var ContainerAcquireLeaseExceptionHeaders = {
+const ContainerAcquireLeaseExceptionHeaders = {
     serializedName: "Container_acquireLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -19212,7 +18152,7 @@ var ContainerAcquireLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerReleaseLeaseHeaders = {
+const ContainerReleaseLeaseHeaders = {
     serializedName: "Container_releaseLeaseHeaders",
     type: {
         name: "Composite",
@@ -19263,7 +18203,7 @@ var ContainerReleaseLeaseHeaders = {
         }
     }
 };
-var ContainerReleaseLeaseExceptionHeaders = {
+const ContainerReleaseLeaseExceptionHeaders = {
     serializedName: "Container_releaseLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -19279,7 +18219,7 @@ var ContainerReleaseLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerRenewLeaseHeaders = {
+const ContainerRenewLeaseHeaders = {
     serializedName: "Container_renewLeaseHeaders",
     type: {
         name: "Composite",
@@ -19337,7 +18277,7 @@ var ContainerRenewLeaseHeaders = {
         }
     }
 };
-var ContainerRenewLeaseExceptionHeaders = {
+const ContainerRenewLeaseExceptionHeaders = {
     serializedName: "Container_renewLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -19353,7 +18293,7 @@ var ContainerRenewLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerBreakLeaseHeaders = {
+const ContainerBreakLeaseHeaders = {
     serializedName: "Container_breakLeaseHeaders",
     type: {
         name: "Composite",
@@ -19411,7 +18351,7 @@ var ContainerBreakLeaseHeaders = {
         }
     }
 };
-var ContainerBreakLeaseExceptionHeaders = {
+const ContainerBreakLeaseExceptionHeaders = {
     serializedName: "Container_breakLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -19427,7 +18367,7 @@ var ContainerBreakLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerChangeLeaseHeaders = {
+const ContainerChangeLeaseHeaders = {
     serializedName: "Container_changeLeaseHeaders",
     type: {
         name: "Composite",
@@ -19485,7 +18425,7 @@ var ContainerChangeLeaseHeaders = {
         }
     }
 };
-var ContainerChangeLeaseExceptionHeaders = {
+const ContainerChangeLeaseExceptionHeaders = {
     serializedName: "Container_changeLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -19501,7 +18441,7 @@ var ContainerChangeLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerListBlobFlatSegmentHeaders = {
+const ContainerListBlobFlatSegmentHeaders = {
     serializedName: "Container_listBlobFlatSegmentHeaders",
     type: {
         name: "Composite",
@@ -19552,7 +18492,7 @@ var ContainerListBlobFlatSegmentHeaders = {
         }
     }
 };
-var ContainerListBlobFlatSegmentExceptionHeaders = {
+const ContainerListBlobFlatSegmentExceptionHeaders = {
     serializedName: "Container_listBlobFlatSegmentExceptionHeaders",
     type: {
         name: "Composite",
@@ -19568,7 +18508,7 @@ var ContainerListBlobFlatSegmentExceptionHeaders = {
         }
     }
 };
-var ContainerListBlobHierarchySegmentHeaders = {
+const ContainerListBlobHierarchySegmentHeaders = {
     serializedName: "Container_listBlobHierarchySegmentHeaders",
     type: {
         name: "Composite",
@@ -19619,7 +18559,7 @@ var ContainerListBlobHierarchySegmentHeaders = {
         }
     }
 };
-var ContainerListBlobHierarchySegmentExceptionHeaders = {
+const ContainerListBlobHierarchySegmentExceptionHeaders = {
     serializedName: "Container_listBlobHierarchySegmentExceptionHeaders",
     type: {
         name: "Composite",
@@ -19635,7 +18575,7 @@ var ContainerListBlobHierarchySegmentExceptionHeaders = {
         }
     }
 };
-var ContainerGetAccountInfoHeaders = {
+const ContainerGetAccountInfoHeaders = {
     serializedName: "Container_getAccountInfoHeaders",
     type: {
         name: "Composite",
@@ -19700,7 +18640,7 @@ var ContainerGetAccountInfoHeaders = {
         }
     }
 };
-var ContainerGetAccountInfoExceptionHeaders = {
+const ContainerGetAccountInfoExceptionHeaders = {
     serializedName: "Container_getAccountInfoExceptionHeaders",
     type: {
         name: "Composite",
@@ -19716,7 +18656,7 @@ var ContainerGetAccountInfoExceptionHeaders = {
         }
     }
 };
-var DirectoryCreateHeaders = {
+const DirectoryCreateHeaders = {
     serializedName: "Directory_createHeaders",
     type: {
         name: "Composite",
@@ -19774,7 +18714,7 @@ var DirectoryCreateHeaders = {
         }
     }
 };
-var DirectoryCreateExceptionHeaders = {
+const DirectoryCreateExceptionHeaders = {
     serializedName: "Directory_createExceptionHeaders",
     type: {
         name: "Composite",
@@ -19804,7 +18744,7 @@ var DirectoryCreateExceptionHeaders = {
         }
     }
 };
-var DirectoryRenameHeaders = {
+const DirectoryRenameHeaders = {
     serializedName: "Directory_renameHeaders",
     type: {
         name: "Composite",
@@ -19869,7 +18809,7 @@ var DirectoryRenameHeaders = {
         }
     }
 };
-var DirectoryRenameExceptionHeaders = {
+const DirectoryRenameExceptionHeaders = {
     serializedName: "Directory_renameExceptionHeaders",
     type: {
         name: "Composite",
@@ -19899,7 +18839,7 @@ var DirectoryRenameExceptionHeaders = {
         }
     }
 };
-var DirectoryDeleteHeaders = {
+const DirectoryDeleteHeaders = {
     serializedName: "Directory_deleteHeaders",
     type: {
         name: "Composite",
@@ -19943,7 +18883,7 @@ var DirectoryDeleteHeaders = {
         }
     }
 };
-var DirectoryDeleteExceptionHeaders = {
+const DirectoryDeleteExceptionHeaders = {
     serializedName: "Directory_deleteExceptionHeaders",
     type: {
         name: "Composite",
@@ -19973,7 +18913,7 @@ var DirectoryDeleteExceptionHeaders = {
         }
     }
 };
-var DirectorySetAccessControlHeaders = {
+const DirectorySetAccessControlHeaders = {
     serializedName: "Directory_setAccessControlHeaders",
     type: {
         name: "Composite",
@@ -20017,7 +18957,7 @@ var DirectorySetAccessControlHeaders = {
         }
     }
 };
-var DirectorySetAccessControlExceptionHeaders = {
+const DirectorySetAccessControlExceptionHeaders = {
     serializedName: "Directory_setAccessControlExceptionHeaders",
     type: {
         name: "Composite",
@@ -20047,7 +18987,7 @@ var DirectorySetAccessControlExceptionHeaders = {
         }
     }
 };
-var DirectoryGetAccessControlHeaders = {
+const DirectoryGetAccessControlHeaders = {
     serializedName: "Directory_getAccessControlHeaders",
     type: {
         name: "Composite",
@@ -20119,7 +19059,7 @@ var DirectoryGetAccessControlHeaders = {
         }
     }
 };
-var DirectoryGetAccessControlExceptionHeaders = {
+const DirectoryGetAccessControlExceptionHeaders = {
     serializedName: "Directory_getAccessControlExceptionHeaders",
     type: {
         name: "Composite",
@@ -20149,7 +19089,7 @@ var DirectoryGetAccessControlExceptionHeaders = {
         }
     }
 };
-var BlobDownloadHeaders = {
+const BlobDownloadHeaders = {
     serializedName: "Blob_downloadHeaders",
     type: {
         name: "Composite",
@@ -20460,7 +19400,7 @@ var BlobDownloadHeaders = {
         }
     }
 };
-var BlobDownloadExceptionHeaders = {
+const BlobDownloadExceptionHeaders = {
     serializedName: "Blob_downloadExceptionHeaders",
     type: {
         name: "Composite",
@@ -20476,7 +19416,7 @@ var BlobDownloadExceptionHeaders = {
         }
     }
 };
-var BlobGetPropertiesHeaders = {
+const BlobGetPropertiesHeaders = {
     serializedName: "Blob_getPropertiesHeaders",
     type: {
         name: "Composite",
@@ -20830,7 +19770,7 @@ var BlobGetPropertiesHeaders = {
         }
     }
 };
-var BlobGetPropertiesExceptionHeaders = {
+const BlobGetPropertiesExceptionHeaders = {
     serializedName: "Blob_getPropertiesExceptionHeaders",
     type: {
         name: "Composite",
@@ -20846,7 +19786,7 @@ var BlobGetPropertiesExceptionHeaders = {
         }
     }
 };
-var BlobDeleteHeaders = {
+const BlobDeleteHeaders = {
     serializedName: "Blob_deleteHeaders",
     type: {
         name: "Composite",
@@ -20890,7 +19830,7 @@ var BlobDeleteHeaders = {
         }
     }
 };
-var BlobDeleteExceptionHeaders = {
+const BlobDeleteExceptionHeaders = {
     serializedName: "Blob_deleteExceptionHeaders",
     type: {
         name: "Composite",
@@ -20906,7 +19846,7 @@ var BlobDeleteExceptionHeaders = {
         }
     }
 };
-var BlobSetAccessControlHeaders = {
+const BlobSetAccessControlHeaders = {
     serializedName: "Blob_setAccessControlHeaders",
     type: {
         name: "Composite",
@@ -20950,7 +19890,7 @@ var BlobSetAccessControlHeaders = {
         }
     }
 };
-var BlobSetAccessControlExceptionHeaders = {
+const BlobSetAccessControlExceptionHeaders = {
     serializedName: "Blob_setAccessControlExceptionHeaders",
     type: {
         name: "Composite",
@@ -20980,7 +19920,7 @@ var BlobSetAccessControlExceptionHeaders = {
         }
     }
 };
-var BlobGetAccessControlHeaders = {
+const BlobGetAccessControlHeaders = {
     serializedName: "Blob_getAccessControlHeaders",
     type: {
         name: "Composite",
@@ -21052,7 +19992,7 @@ var BlobGetAccessControlHeaders = {
         }
     }
 };
-var BlobGetAccessControlExceptionHeaders = {
+const BlobGetAccessControlExceptionHeaders = {
     serializedName: "Blob_getAccessControlExceptionHeaders",
     type: {
         name: "Composite",
@@ -21082,7 +20022,7 @@ var BlobGetAccessControlExceptionHeaders = {
         }
     }
 };
-var BlobRenameHeaders = {
+const BlobRenameHeaders = {
     serializedName: "Blob_renameHeaders",
     type: {
         name: "Composite",
@@ -21140,7 +20080,7 @@ var BlobRenameHeaders = {
         }
     }
 };
-var BlobRenameExceptionHeaders = {
+const BlobRenameExceptionHeaders = {
     serializedName: "Blob_renameExceptionHeaders",
     type: {
         name: "Composite",
@@ -21170,7 +20110,7 @@ var BlobRenameExceptionHeaders = {
         }
     }
 };
-var BlobUndeleteHeaders = {
+const BlobUndeleteHeaders = {
     serializedName: "Blob_undeleteHeaders",
     type: {
         name: "Composite",
@@ -21214,7 +20154,7 @@ var BlobUndeleteHeaders = {
         }
     }
 };
-var BlobUndeleteExceptionHeaders = {
+const BlobUndeleteExceptionHeaders = {
     serializedName: "Blob_undeleteExceptionHeaders",
     type: {
         name: "Composite",
@@ -21230,7 +20170,7 @@ var BlobUndeleteExceptionHeaders = {
         }
     }
 };
-var BlobSetExpiryHeaders = {
+const BlobSetExpiryHeaders = {
     serializedName: "Blob_setExpiryHeaders",
     type: {
         name: "Composite",
@@ -21281,7 +20221,7 @@ var BlobSetExpiryHeaders = {
         }
     }
 };
-var BlobSetExpiryExceptionHeaders = {
+const BlobSetExpiryExceptionHeaders = {
     serializedName: "Blob_setExpiryExceptionHeaders",
     type: {
         name: "Composite",
@@ -21297,7 +20237,7 @@ var BlobSetExpiryExceptionHeaders = {
         }
     }
 };
-var BlobSetHttpHeadersHeaders = {
+const BlobSetHttpHeadersHeaders = {
     serializedName: "Blob_setHttpHeadersHeaders",
     type: {
         name: "Composite",
@@ -21362,7 +20302,7 @@ var BlobSetHttpHeadersHeaders = {
         }
     }
 };
-var BlobSetHttpHeadersExceptionHeaders = {
+const BlobSetHttpHeadersExceptionHeaders = {
     serializedName: "Blob_setHttpHeadersExceptionHeaders",
     type: {
         name: "Composite",
@@ -21378,7 +20318,7 @@ var BlobSetHttpHeadersExceptionHeaders = {
         }
     }
 };
-var BlobSetMetadataHeaders = {
+const BlobSetMetadataHeaders = {
     serializedName: "Blob_setMetadataHeaders",
     type: {
         name: "Composite",
@@ -21464,7 +20404,7 @@ var BlobSetMetadataHeaders = {
         }
     }
 };
-var BlobSetMetadataExceptionHeaders = {
+const BlobSetMetadataExceptionHeaders = {
     serializedName: "Blob_setMetadataExceptionHeaders",
     type: {
         name: "Composite",
@@ -21480,7 +20420,7 @@ var BlobSetMetadataExceptionHeaders = {
         }
     }
 };
-var BlobAcquireLeaseHeaders = {
+const BlobAcquireLeaseHeaders = {
     serializedName: "Blob_acquireLeaseHeaders",
     type: {
         name: "Composite",
@@ -21538,7 +20478,7 @@ var BlobAcquireLeaseHeaders = {
         }
     }
 };
-var BlobAcquireLeaseExceptionHeaders = {
+const BlobAcquireLeaseExceptionHeaders = {
     serializedName: "Blob_acquireLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -21554,7 +20494,7 @@ var BlobAcquireLeaseExceptionHeaders = {
         }
     }
 };
-var BlobReleaseLeaseHeaders = {
+const BlobReleaseLeaseHeaders = {
     serializedName: "Blob_releaseLeaseHeaders",
     type: {
         name: "Composite",
@@ -21605,7 +20545,7 @@ var BlobReleaseLeaseHeaders = {
         }
     }
 };
-var BlobReleaseLeaseExceptionHeaders = {
+const BlobReleaseLeaseExceptionHeaders = {
     serializedName: "Blob_releaseLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -21621,7 +20561,7 @@ var BlobReleaseLeaseExceptionHeaders = {
         }
     }
 };
-var BlobRenewLeaseHeaders = {
+const BlobRenewLeaseHeaders = {
     serializedName: "Blob_renewLeaseHeaders",
     type: {
         name: "Composite",
@@ -21679,7 +20619,7 @@ var BlobRenewLeaseHeaders = {
         }
     }
 };
-var BlobRenewLeaseExceptionHeaders = {
+const BlobRenewLeaseExceptionHeaders = {
     serializedName: "Blob_renewLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -21695,7 +20635,7 @@ var BlobRenewLeaseExceptionHeaders = {
         }
     }
 };
-var BlobChangeLeaseHeaders = {
+const BlobChangeLeaseHeaders = {
     serializedName: "Blob_changeLeaseHeaders",
     type: {
         name: "Composite",
@@ -21753,7 +20693,7 @@ var BlobChangeLeaseHeaders = {
         }
     }
 };
-var BlobChangeLeaseExceptionHeaders = {
+const BlobChangeLeaseExceptionHeaders = {
     serializedName: "Blob_changeLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -21769,7 +20709,7 @@ var BlobChangeLeaseExceptionHeaders = {
         }
     }
 };
-var BlobBreakLeaseHeaders = {
+const BlobBreakLeaseHeaders = {
     serializedName: "Blob_breakLeaseHeaders",
     type: {
         name: "Composite",
@@ -21827,7 +20767,7 @@ var BlobBreakLeaseHeaders = {
         }
     }
 };
-var BlobBreakLeaseExceptionHeaders = {
+const BlobBreakLeaseExceptionHeaders = {
     serializedName: "Blob_breakLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -21843,7 +20783,7 @@ var BlobBreakLeaseExceptionHeaders = {
         }
     }
 };
-var BlobCreateSnapshotHeaders = {
+const BlobCreateSnapshotHeaders = {
     serializedName: "Blob_createSnapshotHeaders",
     type: {
         name: "Composite",
@@ -21922,7 +20862,7 @@ var BlobCreateSnapshotHeaders = {
         }
     }
 };
-var BlobCreateSnapshotExceptionHeaders = {
+const BlobCreateSnapshotExceptionHeaders = {
     serializedName: "Blob_createSnapshotExceptionHeaders",
     type: {
         name: "Composite",
@@ -21938,7 +20878,7 @@ var BlobCreateSnapshotExceptionHeaders = {
         }
     }
 };
-var BlobStartCopyFromURLHeaders = {
+const BlobStartCopyFromURLHeaders = {
     serializedName: "Blob_startCopyFromURLHeaders",
     type: {
         name: "Composite",
@@ -22018,7 +20958,7 @@ var BlobStartCopyFromURLHeaders = {
         }
     }
 };
-var BlobStartCopyFromURLExceptionHeaders = {
+const BlobStartCopyFromURLExceptionHeaders = {
     serializedName: "Blob_startCopyFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -22034,7 +20974,7 @@ var BlobStartCopyFromURLExceptionHeaders = {
         }
     }
 };
-var BlobCopyFromURLHeaders = {
+const BlobCopyFromURLHeaders = {
     serializedName: "Blob_copyFromURLHeaders",
     type: {
         name: "Composite",
@@ -22128,7 +21068,7 @@ var BlobCopyFromURLHeaders = {
         }
     }
 };
-var BlobCopyFromURLExceptionHeaders = {
+const BlobCopyFromURLExceptionHeaders = {
     serializedName: "Blob_copyFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -22144,7 +21084,7 @@ var BlobCopyFromURLExceptionHeaders = {
         }
     }
 };
-var BlobAbortCopyFromURLHeaders = {
+const BlobAbortCopyFromURLHeaders = {
     serializedName: "Blob_abortCopyFromURLHeaders",
     type: {
         name: "Composite",
@@ -22188,7 +21128,7 @@ var BlobAbortCopyFromURLHeaders = {
         }
     }
 };
-var BlobAbortCopyFromURLExceptionHeaders = {
+const BlobAbortCopyFromURLExceptionHeaders = {
     serializedName: "Blob_abortCopyFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -22204,7 +21144,7 @@ var BlobAbortCopyFromURLExceptionHeaders = {
         }
     }
 };
-var BlobSetTierHeaders = {
+const BlobSetTierHeaders = {
     serializedName: "Blob_setTierHeaders",
     type: {
         name: "Composite",
@@ -22241,7 +21181,7 @@ var BlobSetTierHeaders = {
         }
     }
 };
-var BlobSetTierExceptionHeaders = {
+const BlobSetTierExceptionHeaders = {
     serializedName: "Blob_setTierExceptionHeaders",
     type: {
         name: "Composite",
@@ -22257,7 +21197,7 @@ var BlobSetTierExceptionHeaders = {
         }
     }
 };
-var BlobGetAccountInfoHeaders = {
+const BlobGetAccountInfoHeaders = {
     serializedName: "Blob_getAccountInfoHeaders",
     type: {
         name: "Composite",
@@ -22322,7 +21262,7 @@ var BlobGetAccountInfoHeaders = {
         }
     }
 };
-var BlobGetAccountInfoExceptionHeaders = {
+const BlobGetAccountInfoExceptionHeaders = {
     serializedName: "Blob_getAccountInfoExceptionHeaders",
     type: {
         name: "Composite",
@@ -22338,7 +21278,7 @@ var BlobGetAccountInfoExceptionHeaders = {
         }
     }
 };
-var BlobQueryHeaders = {
+const BlobQueryHeaders = {
     serializedName: "Blob_queryHeaders",
     type: {
         name: "Composite",
@@ -22597,7 +21537,7 @@ var BlobQueryHeaders = {
         }
     }
 };
-var BlobQueryExceptionHeaders = {
+const BlobQueryExceptionHeaders = {
     serializedName: "Blob_queryExceptionHeaders",
     type: {
         name: "Composite",
@@ -22613,7 +21553,7 @@ var BlobQueryExceptionHeaders = {
         }
     }
 };
-var BlobGetTagsHeaders = {
+const BlobGetTagsHeaders = {
     serializedName: "Blob_getTagsHeaders",
     type: {
         name: "Composite",
@@ -22657,7 +21597,7 @@ var BlobGetTagsHeaders = {
         }
     }
 };
-var BlobGetTagsExceptionHeaders = {
+const BlobGetTagsExceptionHeaders = {
     serializedName: "Blob_getTagsExceptionHeaders",
     type: {
         name: "Composite",
@@ -22673,7 +21613,7 @@ var BlobGetTagsExceptionHeaders = {
         }
     }
 };
-var BlobSetTagsHeaders = {
+const BlobSetTagsHeaders = {
     serializedName: "Blob_setTagsHeaders",
     type: {
         name: "Composite",
@@ -22717,7 +21657,7 @@ var BlobSetTagsHeaders = {
         }
     }
 };
-var BlobSetTagsExceptionHeaders = {
+const BlobSetTagsExceptionHeaders = {
     serializedName: "Blob_setTagsExceptionHeaders",
     type: {
         name: "Composite",
@@ -22733,7 +21673,7 @@ var BlobSetTagsExceptionHeaders = {
         }
     }
 };
-var PageBlobCreateHeaders = {
+const PageBlobCreateHeaders = {
     serializedName: "PageBlob_createHeaders",
     type: {
         name: "Composite",
@@ -22826,7 +21766,7 @@ var PageBlobCreateHeaders = {
         }
     }
 };
-var PageBlobCreateExceptionHeaders = {
+const PageBlobCreateExceptionHeaders = {
     serializedName: "PageBlob_createExceptionHeaders",
     type: {
         name: "Composite",
@@ -22842,7 +21782,7 @@ var PageBlobCreateExceptionHeaders = {
         }
     }
 };
-var PageBlobUploadPagesHeaders = {
+const PageBlobUploadPagesHeaders = {
     serializedName: "PageBlob_uploadPagesHeaders",
     type: {
         name: "Composite",
@@ -22942,7 +21882,7 @@ var PageBlobUploadPagesHeaders = {
         }
     }
 };
-var PageBlobUploadPagesExceptionHeaders = {
+const PageBlobUploadPagesExceptionHeaders = {
     serializedName: "PageBlob_uploadPagesExceptionHeaders",
     type: {
         name: "Composite",
@@ -22958,7 +21898,7 @@ var PageBlobUploadPagesExceptionHeaders = {
         }
     }
 };
-var PageBlobClearPagesHeaders = {
+const PageBlobClearPagesHeaders = {
     serializedName: "PageBlob_clearPagesHeaders",
     type: {
         name: "Composite",
@@ -23037,7 +21977,7 @@ var PageBlobClearPagesHeaders = {
         }
     }
 };
-var PageBlobClearPagesExceptionHeaders = {
+const PageBlobClearPagesExceptionHeaders = {
     serializedName: "PageBlob_clearPagesExceptionHeaders",
     type: {
         name: "Composite",
@@ -23053,7 +21993,7 @@ var PageBlobClearPagesExceptionHeaders = {
         }
     }
 };
-var PageBlobUploadPagesFromURLHeaders = {
+const PageBlobUploadPagesFromURLHeaders = {
     serializedName: "PageBlob_uploadPagesFromURLHeaders",
     type: {
         name: "Composite",
@@ -23146,7 +22086,7 @@ var PageBlobUploadPagesFromURLHeaders = {
         }
     }
 };
-var PageBlobUploadPagesFromURLExceptionHeaders = {
+const PageBlobUploadPagesFromURLExceptionHeaders = {
     serializedName: "PageBlob_uploadPagesFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -23162,7 +22102,7 @@ var PageBlobUploadPagesFromURLExceptionHeaders = {
         }
     }
 };
-var PageBlobGetPageRangesHeaders = {
+const PageBlobGetPageRangesHeaders = {
     serializedName: "PageBlob_getPageRangesHeaders",
     type: {
         name: "Composite",
@@ -23227,7 +22167,7 @@ var PageBlobGetPageRangesHeaders = {
         }
     }
 };
-var PageBlobGetPageRangesExceptionHeaders = {
+const PageBlobGetPageRangesExceptionHeaders = {
     serializedName: "PageBlob_getPageRangesExceptionHeaders",
     type: {
         name: "Composite",
@@ -23243,7 +22183,7 @@ var PageBlobGetPageRangesExceptionHeaders = {
         }
     }
 };
-var PageBlobGetPageRangesDiffHeaders = {
+const PageBlobGetPageRangesDiffHeaders = {
     serializedName: "PageBlob_getPageRangesDiffHeaders",
     type: {
         name: "Composite",
@@ -23308,7 +22248,7 @@ var PageBlobGetPageRangesDiffHeaders = {
         }
     }
 };
-var PageBlobGetPageRangesDiffExceptionHeaders = {
+const PageBlobGetPageRangesDiffExceptionHeaders = {
     serializedName: "PageBlob_getPageRangesDiffExceptionHeaders",
     type: {
         name: "Composite",
@@ -23324,7 +22264,7 @@ var PageBlobGetPageRangesDiffExceptionHeaders = {
         }
     }
 };
-var PageBlobResizeHeaders = {
+const PageBlobResizeHeaders = {
     serializedName: "PageBlob_resizeHeaders",
     type: {
         name: "Composite",
@@ -23389,7 +22329,7 @@ var PageBlobResizeHeaders = {
         }
     }
 };
-var PageBlobResizeExceptionHeaders = {
+const PageBlobResizeExceptionHeaders = {
     serializedName: "PageBlob_resizeExceptionHeaders",
     type: {
         name: "Composite",
@@ -23405,7 +22345,7 @@ var PageBlobResizeExceptionHeaders = {
         }
     }
 };
-var PageBlobUpdateSequenceNumberHeaders = {
+const PageBlobUpdateSequenceNumberHeaders = {
     serializedName: "PageBlob_updateSequenceNumberHeaders",
     type: {
         name: "Composite",
@@ -23470,7 +22410,7 @@ var PageBlobUpdateSequenceNumberHeaders = {
         }
     }
 };
-var PageBlobUpdateSequenceNumberExceptionHeaders = {
+const PageBlobUpdateSequenceNumberExceptionHeaders = {
     serializedName: "PageBlob_updateSequenceNumberExceptionHeaders",
     type: {
         name: "Composite",
@@ -23486,7 +22426,7 @@ var PageBlobUpdateSequenceNumberExceptionHeaders = {
         }
     }
 };
-var PageBlobCopyIncrementalHeaders = {
+const PageBlobCopyIncrementalHeaders = {
     serializedName: "PageBlob_copyIncrementalHeaders",
     type: {
         name: "Composite",
@@ -23559,7 +22499,7 @@ var PageBlobCopyIncrementalHeaders = {
         }
     }
 };
-var PageBlobCopyIncrementalExceptionHeaders = {
+const PageBlobCopyIncrementalExceptionHeaders = {
     serializedName: "PageBlob_copyIncrementalExceptionHeaders",
     type: {
         name: "Composite",
@@ -23575,7 +22515,7 @@ var PageBlobCopyIncrementalExceptionHeaders = {
         }
     }
 };
-var AppendBlobCreateHeaders = {
+const AppendBlobCreateHeaders = {
     serializedName: "AppendBlob_createHeaders",
     type: {
         name: "Composite",
@@ -23668,7 +22608,7 @@ var AppendBlobCreateHeaders = {
         }
     }
 };
-var AppendBlobCreateExceptionHeaders = {
+const AppendBlobCreateExceptionHeaders = {
     serializedName: "AppendBlob_createExceptionHeaders",
     type: {
         name: "Composite",
@@ -23684,7 +22624,7 @@ var AppendBlobCreateExceptionHeaders = {
         }
     }
 };
-var AppendBlobAppendBlockHeaders = {
+const AppendBlobAppendBlockHeaders = {
     serializedName: "AppendBlob_appendBlockHeaders",
     type: {
         name: "Composite",
@@ -23791,7 +22731,7 @@ var AppendBlobAppendBlockHeaders = {
         }
     }
 };
-var AppendBlobAppendBlockExceptionHeaders = {
+const AppendBlobAppendBlockExceptionHeaders = {
     serializedName: "AppendBlob_appendBlockExceptionHeaders",
     type: {
         name: "Composite",
@@ -23807,7 +22747,7 @@ var AppendBlobAppendBlockExceptionHeaders = {
         }
     }
 };
-var AppendBlobAppendBlockFromUrlHeaders = {
+const AppendBlobAppendBlockFromUrlHeaders = {
     serializedName: "AppendBlob_appendBlockFromUrlHeaders",
     type: {
         name: "Composite",
@@ -23907,7 +22847,7 @@ var AppendBlobAppendBlockFromUrlHeaders = {
         }
     }
 };
-var AppendBlobAppendBlockFromUrlExceptionHeaders = {
+const AppendBlobAppendBlockFromUrlExceptionHeaders = {
     serializedName: "AppendBlob_appendBlockFromUrlExceptionHeaders",
     type: {
         name: "Composite",
@@ -23923,7 +22863,7 @@ var AppendBlobAppendBlockFromUrlExceptionHeaders = {
         }
     }
 };
-var AppendBlobSealHeaders = {
+const AppendBlobSealHeaders = {
     serializedName: "AppendBlob_sealHeaders",
     type: {
         name: "Composite",
@@ -23981,7 +22921,7 @@ var AppendBlobSealHeaders = {
         }
     }
 };
-var AppendBlobSealExceptionHeaders = {
+const AppendBlobSealExceptionHeaders = {
     serializedName: "AppendBlob_sealExceptionHeaders",
     type: {
         name: "Composite",
@@ -23997,7 +22937,7 @@ var AppendBlobSealExceptionHeaders = {
         }
     }
 };
-var BlockBlobUploadHeaders = {
+const BlockBlobUploadHeaders = {
     serializedName: "BlockBlob_uploadHeaders",
     type: {
         name: "Composite",
@@ -24090,7 +23030,7 @@ var BlockBlobUploadHeaders = {
         }
     }
 };
-var BlockBlobUploadExceptionHeaders = {
+const BlockBlobUploadExceptionHeaders = {
     serializedName: "BlockBlob_uploadExceptionHeaders",
     type: {
         name: "Composite",
@@ -24106,7 +23046,7 @@ var BlockBlobUploadExceptionHeaders = {
         }
     }
 };
-var BlockBlobPutBlobFromUrlHeaders = {
+const BlockBlobPutBlobFromUrlHeaders = {
     serializedName: "BlockBlob_putBlobFromUrlHeaders",
     type: {
         name: "Composite",
@@ -24199,7 +23139,7 @@ var BlockBlobPutBlobFromUrlHeaders = {
         }
     }
 };
-var BlockBlobPutBlobFromUrlExceptionHeaders = {
+const BlockBlobPutBlobFromUrlExceptionHeaders = {
     serializedName: "BlockBlob_putBlobFromUrlExceptionHeaders",
     type: {
         name: "Composite",
@@ -24215,7 +23155,7 @@ var BlockBlobPutBlobFromUrlExceptionHeaders = {
         }
     }
 };
-var BlockBlobStageBlockHeaders = {
+const BlockBlobStageBlockHeaders = {
     serializedName: "BlockBlob_stageBlockHeaders",
     type: {
         name: "Composite",
@@ -24294,7 +23234,7 @@ var BlockBlobStageBlockHeaders = {
         }
     }
 };
-var BlockBlobStageBlockExceptionHeaders = {
+const BlockBlobStageBlockExceptionHeaders = {
     serializedName: "BlockBlob_stageBlockExceptionHeaders",
     type: {
         name: "Composite",
@@ -24310,7 +23250,7 @@ var BlockBlobStageBlockExceptionHeaders = {
         }
     }
 };
-var BlockBlobStageBlockFromURLHeaders = {
+const BlockBlobStageBlockFromURLHeaders = {
     serializedName: "BlockBlob_stageBlockFromURLHeaders",
     type: {
         name: "Composite",
@@ -24389,7 +23329,7 @@ var BlockBlobStageBlockFromURLHeaders = {
         }
     }
 };
-var BlockBlobStageBlockFromURLExceptionHeaders = {
+const BlockBlobStageBlockFromURLExceptionHeaders = {
     serializedName: "BlockBlob_stageBlockFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -24405,7 +23345,7 @@ var BlockBlobStageBlockFromURLExceptionHeaders = {
         }
     }
 };
-var BlockBlobCommitBlockListHeaders = {
+const BlockBlobCommitBlockListHeaders = {
     serializedName: "BlockBlob_commitBlockListHeaders",
     type: {
         name: "Composite",
@@ -24505,7 +23445,7 @@ var BlockBlobCommitBlockListHeaders = {
         }
     }
 };
-var BlockBlobCommitBlockListExceptionHeaders = {
+const BlockBlobCommitBlockListExceptionHeaders = {
     serializedName: "BlockBlob_commitBlockListExceptionHeaders",
     type: {
         name: "Composite",
@@ -24521,7 +23461,7 @@ var BlockBlobCommitBlockListExceptionHeaders = {
         }
     }
 };
-var BlockBlobGetBlockListHeaders = {
+const BlockBlobGetBlockListHeaders = {
     serializedName: "BlockBlob_getBlockListHeaders",
     type: {
         name: "Composite",
@@ -24593,7 +23533,7 @@ var BlockBlobGetBlockListHeaders = {
         }
     }
 };
-var BlockBlobGetBlockListExceptionHeaders = {
+const BlockBlobGetBlockListExceptionHeaders = {
     serializedName: "BlockBlob_getBlockListExceptionHeaders",
     type: {
         name: "Composite",
@@ -24809,7 +23749,7 @@ var Mappers = /*#__PURE__*/Object.freeze({
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var contentType = {
+const contentType = {
     parameterPath: ["options", "contentType"],
     mapper: {
         defaultValue: "application/xml",
@@ -24820,11 +23760,11 @@ var contentType = {
         }
     }
 };
-var blobServiceProperties = {
+const blobServiceProperties = {
     parameterPath: "blobServiceProperties",
     mapper: BlobServiceProperties
 };
-var accept = {
+const accept = {
     parameterPath: "accept",
     mapper: {
         defaultValue: "application/xml",
@@ -24835,7 +23775,7 @@ var accept = {
         }
     }
 };
-var url = {
+const url = {
     parameterPath: "url",
     mapper: {
         serializedName: "url",
@@ -24847,7 +23787,7 @@ var url = {
     },
     skipEncoding: true
 };
-var restype = {
+const restype = {
     parameterPath: "restype",
     mapper: {
         defaultValue: "service",
@@ -24858,7 +23798,7 @@ var restype = {
         }
     }
 };
-var comp = {
+const comp = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "properties",
@@ -24869,7 +23809,7 @@ var comp = {
         }
     }
 };
-var timeoutInSeconds = {
+const timeoutInSeconds = {
     parameterPath: ["options", "timeoutInSeconds"],
     mapper: {
         constraints: {
@@ -24882,7 +23822,7 @@ var timeoutInSeconds = {
         }
     }
 };
-var version = {
+const version = {
     parameterPath: "version",
     mapper: {
         defaultValue: "2020-08-04",
@@ -24893,7 +23833,7 @@ var version = {
         }
     }
 };
-var requestId = {
+const requestId = {
     parameterPath: ["options", "requestId"],
     mapper: {
         serializedName: "x-ms-client-request-id",
@@ -24903,7 +23843,7 @@ var requestId = {
         }
     }
 };
-var accept1 = {
+const accept1 = {
     parameterPath: "accept",
     mapper: {
         defaultValue: "application/xml",
@@ -24914,7 +23854,7 @@ var accept1 = {
         }
     }
 };
-var comp1 = {
+const comp1 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "stats",
@@ -24925,7 +23865,7 @@ var comp1 = {
         }
     }
 };
-var comp2 = {
+const comp2 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "list",
@@ -24936,7 +23876,7 @@ var comp2 = {
         }
     }
 };
-var prefix = {
+const prefix = {
     parameterPath: ["options", "prefix"],
     mapper: {
         serializedName: "prefix",
@@ -24946,7 +23886,7 @@ var prefix = {
         }
     }
 };
-var marker = {
+const marker = {
     parameterPath: ["options", "marker"],
     mapper: {
         serializedName: "marker",
@@ -24956,7 +23896,7 @@ var marker = {
         }
     }
 };
-var maxPageSize = {
+const maxPageSize = {
     parameterPath: ["options", "maxPageSize"],
     mapper: {
         constraints: {
@@ -24969,7 +23909,7 @@ var maxPageSize = {
         }
     }
 };
-var include = {
+const include = {
     parameterPath: ["options", "include"],
     mapper: {
         serializedName: "include",
@@ -24987,11 +23927,11 @@ var include = {
     },
     collectionFormat: coreHttp.QueryCollectionFormat.Csv
 };
-var keyInfo = {
+const keyInfo = {
     parameterPath: "keyInfo",
     mapper: KeyInfo
 };
-var comp3 = {
+const comp3 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "userdelegationkey",
@@ -25002,7 +23942,7 @@ var comp3 = {
         }
     }
 };
-var restype1 = {
+const restype1 = {
     parameterPath: "restype",
     mapper: {
         defaultValue: "account",
@@ -25013,7 +23953,7 @@ var restype1 = {
         }
     }
 };
-var body = {
+const body = {
     parameterPath: "body",
     mapper: {
         serializedName: "body",
@@ -25024,7 +23964,7 @@ var body = {
         }
     }
 };
-var comp4 = {
+const comp4 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "batch",
@@ -25035,7 +23975,7 @@ var comp4 = {
         }
     }
 };
-var contentLength = {
+const contentLength = {
     parameterPath: "contentLength",
     mapper: {
         serializedName: "Content-Length",
@@ -25046,7 +23986,7 @@ var contentLength = {
         }
     }
 };
-var multipartContentType = {
+const multipartContentType = {
     parameterPath: "multipartContentType",
     mapper: {
         serializedName: "Content-Type",
@@ -25057,7 +23997,7 @@ var multipartContentType = {
         }
     }
 };
-var comp5 = {
+const comp5 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "blobs",
@@ -25068,7 +24008,7 @@ var comp5 = {
         }
     }
 };
-var where = {
+const where = {
     parameterPath: ["options", "where"],
     mapper: {
         serializedName: "where",
@@ -25078,7 +24018,7 @@ var where = {
         }
     }
 };
-var restype2 = {
+const restype2 = {
     parameterPath: "restype",
     mapper: {
         defaultValue: "container",
@@ -25089,7 +24029,7 @@ var restype2 = {
         }
     }
 };
-var metadata = {
+const metadata = {
     parameterPath: ["options", "metadata"],
     mapper: {
         serializedName: "x-ms-meta",
@@ -25101,7 +24041,7 @@ var metadata = {
         headerCollectionPrefix: "x-ms-meta-"
     }
 };
-var access = {
+const access = {
     parameterPath: ["options", "access"],
     mapper: {
         serializedName: "x-ms-blob-public-access",
@@ -25112,7 +24052,7 @@ var access = {
         }
     }
 };
-var defaultEncryptionScope = {
+const defaultEncryptionScope = {
     parameterPath: [
         "options",
         "containerEncryptionScope",
@@ -25126,7 +24066,7 @@ var defaultEncryptionScope = {
         }
     }
 };
-var preventEncryptionScopeOverride = {
+const preventEncryptionScopeOverride = {
     parameterPath: [
         "options",
         "containerEncryptionScope",
@@ -25140,7 +24080,7 @@ var preventEncryptionScopeOverride = {
         }
     }
 };
-var leaseId = {
+const leaseId = {
     parameterPath: ["options", "leaseAccessConditions", "leaseId"],
     mapper: {
         serializedName: "x-ms-lease-id",
@@ -25150,7 +24090,7 @@ var leaseId = {
         }
     }
 };
-var ifModifiedSince = {
+const ifModifiedSince = {
     parameterPath: ["options", "modifiedAccessConditions", "ifModifiedSince"],
     mapper: {
         serializedName: "If-Modified-Since",
@@ -25160,7 +24100,7 @@ var ifModifiedSince = {
         }
     }
 };
-var ifUnmodifiedSince = {
+const ifUnmodifiedSince = {
     parameterPath: ["options", "modifiedAccessConditions", "ifUnmodifiedSince"],
     mapper: {
         serializedName: "If-Unmodified-Since",
@@ -25170,7 +24110,7 @@ var ifUnmodifiedSince = {
         }
     }
 };
-var comp6 = {
+const comp6 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "metadata",
@@ -25181,7 +24121,7 @@ var comp6 = {
         }
     }
 };
-var comp7 = {
+const comp7 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "acl",
@@ -25192,7 +24132,7 @@ var comp7 = {
         }
     }
 };
-var containerAcl = {
+const containerAcl = {
     parameterPath: ["options", "containerAcl"],
     mapper: {
         serializedName: "containerAcl",
@@ -25210,7 +24150,7 @@ var containerAcl = {
         }
     }
 };
-var comp8 = {
+const comp8 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "undelete",
@@ -25221,7 +24161,7 @@ var comp8 = {
         }
     }
 };
-var deletedContainerName = {
+const deletedContainerName = {
     parameterPath: ["options", "deletedContainerName"],
     mapper: {
         serializedName: "x-ms-deleted-container-name",
@@ -25231,7 +24171,7 @@ var deletedContainerName = {
         }
     }
 };
-var deletedContainerVersion = {
+const deletedContainerVersion = {
     parameterPath: ["options", "deletedContainerVersion"],
     mapper: {
         serializedName: "x-ms-deleted-container-version",
@@ -25241,7 +24181,7 @@ var deletedContainerVersion = {
         }
     }
 };
-var comp9 = {
+const comp9 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "rename",
@@ -25252,7 +24192,7 @@ var comp9 = {
         }
     }
 };
-var sourceContainerName = {
+const sourceContainerName = {
     parameterPath: "sourceContainerName",
     mapper: {
         serializedName: "x-ms-source-container-name",
@@ -25263,7 +24203,7 @@ var sourceContainerName = {
         }
     }
 };
-var sourceLeaseId = {
+const sourceLeaseId = {
     parameterPath: ["options", "sourceLeaseId"],
     mapper: {
         serializedName: "x-ms-source-lease-id",
@@ -25273,7 +24213,7 @@ var sourceLeaseId = {
         }
     }
 };
-var comp10 = {
+const comp10 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "lease",
@@ -25284,7 +24224,7 @@ var comp10 = {
         }
     }
 };
-var action = {
+const action = {
     parameterPath: "action",
     mapper: {
         defaultValue: "acquire",
@@ -25295,7 +24235,7 @@ var action = {
         }
     }
 };
-var duration = {
+const duration = {
     parameterPath: ["options", "duration"],
     mapper: {
         serializedName: "x-ms-lease-duration",
@@ -25305,7 +24245,7 @@ var duration = {
         }
     }
 };
-var proposedLeaseId = {
+const proposedLeaseId = {
     parameterPath: ["options", "proposedLeaseId"],
     mapper: {
         serializedName: "x-ms-proposed-lease-id",
@@ -25315,7 +24255,7 @@ var proposedLeaseId = {
         }
     }
 };
-var action1 = {
+const action1 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "release",
@@ -25326,7 +24266,7 @@ var action1 = {
         }
     }
 };
-var leaseId1 = {
+const leaseId1 = {
     parameterPath: "leaseId",
     mapper: {
         serializedName: "x-ms-lease-id",
@@ -25337,7 +24277,7 @@ var leaseId1 = {
         }
     }
 };
-var action2 = {
+const action2 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "renew",
@@ -25348,7 +24288,7 @@ var action2 = {
         }
     }
 };
-var action3 = {
+const action3 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "break",
@@ -25359,7 +24299,7 @@ var action3 = {
         }
     }
 };
-var breakPeriod = {
+const breakPeriod = {
     parameterPath: ["options", "breakPeriod"],
     mapper: {
         serializedName: "x-ms-lease-break-period",
@@ -25369,7 +24309,7 @@ var breakPeriod = {
         }
     }
 };
-var action4 = {
+const action4 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "change",
@@ -25380,7 +24320,7 @@ var action4 = {
         }
     }
 };
-var proposedLeaseId1 = {
+const proposedLeaseId1 = {
     parameterPath: "proposedLeaseId",
     mapper: {
         serializedName: "x-ms-proposed-lease-id",
@@ -25391,7 +24331,7 @@ var proposedLeaseId1 = {
         }
     }
 };
-var include1 = {
+const include1 = {
     parameterPath: ["options", "include"],
     mapper: {
         serializedName: "include",
@@ -25417,7 +24357,7 @@ var include1 = {
     },
     collectionFormat: coreHttp.QueryCollectionFormat.Csv
 };
-var delimiter = {
+const delimiter = {
     parameterPath: "delimiter",
     mapper: {
         serializedName: "delimiter",
@@ -25428,7 +24368,7 @@ var delimiter = {
         }
     }
 };
-var directoryProperties = {
+const directoryProperties = {
     parameterPath: ["options", "directoryProperties"],
     mapper: {
         serializedName: "x-ms-properties",
@@ -25438,7 +24378,7 @@ var directoryProperties = {
         }
     }
 };
-var posixPermissions = {
+const posixPermissions = {
     parameterPath: ["options", "posixPermissions"],
     mapper: {
         serializedName: "x-ms-permissions",
@@ -25448,7 +24388,7 @@ var posixPermissions = {
         }
     }
 };
-var posixUmask = {
+const posixUmask = {
     parameterPath: ["options", "posixUmask"],
     mapper: {
         serializedName: "x-ms-umask",
@@ -25458,7 +24398,7 @@ var posixUmask = {
         }
     }
 };
-var cacheControl = {
+const cacheControl = {
     parameterPath: ["options", "directoryHttpHeaders", "cacheControl"],
     mapper: {
         serializedName: "x-ms-cache-control",
@@ -25468,7 +24408,7 @@ var cacheControl = {
         }
     }
 };
-var contentType1 = {
+const contentType1 = {
     parameterPath: ["options", "directoryHttpHeaders", "contentType"],
     mapper: {
         serializedName: "x-ms-content-type",
@@ -25478,7 +24418,7 @@ var contentType1 = {
         }
     }
 };
-var contentEncoding = {
+const contentEncoding = {
     parameterPath: ["options", "directoryHttpHeaders", "contentEncoding"],
     mapper: {
         serializedName: "x-ms-content-encoding",
@@ -25488,7 +24428,7 @@ var contentEncoding = {
         }
     }
 };
-var contentLanguage = {
+const contentLanguage = {
     parameterPath: ["options", "directoryHttpHeaders", "contentLanguage"],
     mapper: {
         serializedName: "x-ms-content-language",
@@ -25498,7 +24438,7 @@ var contentLanguage = {
         }
     }
 };
-var contentDisposition = {
+const contentDisposition = {
     parameterPath: ["options", "directoryHttpHeaders", "contentDisposition"],
     mapper: {
         serializedName: "x-ms-content-disposition",
@@ -25508,7 +24448,7 @@ var contentDisposition = {
         }
     }
 };
-var ifMatch = {
+const ifMatch = {
     parameterPath: ["options", "modifiedAccessConditions", "ifMatch"],
     mapper: {
         serializedName: "If-Match",
@@ -25518,7 +24458,7 @@ var ifMatch = {
         }
     }
 };
-var ifNoneMatch = {
+const ifNoneMatch = {
     parameterPath: ["options", "modifiedAccessConditions", "ifNoneMatch"],
     mapper: {
         serializedName: "If-None-Match",
@@ -25528,7 +24468,7 @@ var ifNoneMatch = {
         }
     }
 };
-var pathRenameMode = {
+const pathRenameMode = {
     parameterPath: ["options", "pathRenameMode"],
     mapper: {
         serializedName: "mode",
@@ -25539,7 +24479,7 @@ var pathRenameMode = {
         }
     }
 };
-var renameSource = {
+const renameSource = {
     parameterPath: "renameSource",
     mapper: {
         serializedName: "x-ms-rename-source",
@@ -25550,7 +24490,7 @@ var renameSource = {
         }
     }
 };
-var sourceIfModifiedSince = {
+const sourceIfModifiedSince = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -25564,7 +24504,7 @@ var sourceIfModifiedSince = {
         }
     }
 };
-var sourceIfUnmodifiedSince = {
+const sourceIfUnmodifiedSince = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -25578,7 +24518,7 @@ var sourceIfUnmodifiedSince = {
         }
     }
 };
-var sourceIfMatch = {
+const sourceIfMatch = {
     parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfMatch"],
     mapper: {
         serializedName: "x-ms-source-if-match",
@@ -25588,7 +24528,7 @@ var sourceIfMatch = {
         }
     }
 };
-var sourceIfNoneMatch = {
+const sourceIfNoneMatch = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -25602,7 +24542,7 @@ var sourceIfNoneMatch = {
         }
     }
 };
-var action5 = {
+const action5 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "setAccessControl",
@@ -25613,7 +24553,7 @@ var action5 = {
         }
     }
 };
-var owner = {
+const owner = {
     parameterPath: ["options", "owner"],
     mapper: {
         serializedName: "x-ms-owner",
@@ -25623,7 +24563,7 @@ var owner = {
         }
     }
 };
-var group = {
+const group = {
     parameterPath: ["options", "group"],
     mapper: {
         serializedName: "x-ms-group",
@@ -25633,7 +24573,7 @@ var group = {
         }
     }
 };
-var posixAcl = {
+const posixAcl = {
     parameterPath: ["options", "posixAcl"],
     mapper: {
         serializedName: "x-ms-acl",
@@ -25643,7 +24583,7 @@ var posixAcl = {
         }
     }
 };
-var action6 = {
+const action6 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "getAccessControl",
@@ -25654,7 +24594,7 @@ var action6 = {
         }
     }
 };
-var upn = {
+const upn = {
     parameterPath: ["options", "upn"],
     mapper: {
         serializedName: "upn",
@@ -25664,7 +24604,7 @@ var upn = {
         }
     }
 };
-var snapshot = {
+const snapshot = {
     parameterPath: ["options", "snapshot"],
     mapper: {
         serializedName: "snapshot",
@@ -25674,7 +24614,7 @@ var snapshot = {
         }
     }
 };
-var versionId = {
+const versionId = {
     parameterPath: ["options", "versionId"],
     mapper: {
         serializedName: "versionid",
@@ -25684,7 +24624,7 @@ var versionId = {
         }
     }
 };
-var range = {
+const range = {
     parameterPath: ["options", "range"],
     mapper: {
         serializedName: "x-ms-range",
@@ -25694,7 +24634,7 @@ var range = {
         }
     }
 };
-var rangeGetContentMD5 = {
+const rangeGetContentMD5 = {
     parameterPath: ["options", "rangeGetContentMD5"],
     mapper: {
         serializedName: "x-ms-range-get-content-md5",
@@ -25704,7 +24644,7 @@ var rangeGetContentMD5 = {
         }
     }
 };
-var rangeGetContentCRC64 = {
+const rangeGetContentCRC64 = {
     parameterPath: ["options", "rangeGetContentCRC64"],
     mapper: {
         serializedName: "x-ms-range-get-content-crc64",
@@ -25714,7 +24654,7 @@ var rangeGetContentCRC64 = {
         }
     }
 };
-var encryptionKey = {
+const encryptionKey = {
     parameterPath: ["options", "cpkInfo", "encryptionKey"],
     mapper: {
         serializedName: "x-ms-encryption-key",
@@ -25724,7 +24664,7 @@ var encryptionKey = {
         }
     }
 };
-var encryptionKeySha256 = {
+const encryptionKeySha256 = {
     parameterPath: ["options", "cpkInfo", "encryptionKeySha256"],
     mapper: {
         serializedName: "x-ms-encryption-key-sha256",
@@ -25734,7 +24674,7 @@ var encryptionKeySha256 = {
         }
     }
 };
-var encryptionAlgorithm = {
+const encryptionAlgorithm = {
     parameterPath: ["options", "encryptionAlgorithm"],
     mapper: {
         defaultValue: "AES256",
@@ -25745,7 +24685,7 @@ var encryptionAlgorithm = {
         }
     }
 };
-var ifTags = {
+const ifTags = {
     parameterPath: ["options", "modifiedAccessConditions", "ifTags"],
     mapper: {
         serializedName: "x-ms-if-tags",
@@ -25755,7 +24695,7 @@ var ifTags = {
         }
     }
 };
-var deleteSnapshots = {
+const deleteSnapshots = {
     parameterPath: ["options", "deleteSnapshots"],
     mapper: {
         serializedName: "x-ms-delete-snapshots",
@@ -25766,7 +24706,7 @@ var deleteSnapshots = {
         }
     }
 };
-var blobDeleteType = {
+const blobDeleteType = {
     parameterPath: ["options", "blobDeleteType"],
     mapper: {
         serializedName: "deletetype",
@@ -25776,7 +24716,7 @@ var blobDeleteType = {
         }
     }
 };
-var comp11 = {
+const comp11 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "expiry",
@@ -25787,7 +24727,7 @@ var comp11 = {
         }
     }
 };
-var expiryOptions = {
+const expiryOptions = {
     parameterPath: "expiryOptions",
     mapper: {
         serializedName: "x-ms-expiry-option",
@@ -25798,7 +24738,7 @@ var expiryOptions = {
         }
     }
 };
-var expiresOn = {
+const expiresOn = {
     parameterPath: ["options", "expiresOn"],
     mapper: {
         serializedName: "x-ms-expiry-time",
@@ -25808,7 +24748,7 @@ var expiresOn = {
         }
     }
 };
-var blobCacheControl = {
+const blobCacheControl = {
     parameterPath: ["options", "blobHttpHeaders", "blobCacheControl"],
     mapper: {
         serializedName: "x-ms-blob-cache-control",
@@ -25818,7 +24758,7 @@ var blobCacheControl = {
         }
     }
 };
-var blobContentType = {
+const blobContentType = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentType"],
     mapper: {
         serializedName: "x-ms-blob-content-type",
@@ -25828,7 +24768,7 @@ var blobContentType = {
         }
     }
 };
-var blobContentMD5 = {
+const blobContentMD5 = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentMD5"],
     mapper: {
         serializedName: "x-ms-blob-content-md5",
@@ -25838,7 +24778,7 @@ var blobContentMD5 = {
         }
     }
 };
-var blobContentEncoding = {
+const blobContentEncoding = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentEncoding"],
     mapper: {
         serializedName: "x-ms-blob-content-encoding",
@@ -25848,7 +24788,7 @@ var blobContentEncoding = {
         }
     }
 };
-var blobContentLanguage = {
+const blobContentLanguage = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentLanguage"],
     mapper: {
         serializedName: "x-ms-blob-content-language",
@@ -25858,7 +24798,7 @@ var blobContentLanguage = {
         }
     }
 };
-var blobContentDisposition = {
+const blobContentDisposition = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentDisposition"],
     mapper: {
         serializedName: "x-ms-blob-content-disposition",
@@ -25868,7 +24808,7 @@ var blobContentDisposition = {
         }
     }
 };
-var encryptionScope = {
+const encryptionScope = {
     parameterPath: ["options", "encryptionScope"],
     mapper: {
         serializedName: "x-ms-encryption-scope",
@@ -25878,7 +24818,7 @@ var encryptionScope = {
         }
     }
 };
-var comp12 = {
+const comp12 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "snapshot",
@@ -25889,7 +24829,7 @@ var comp12 = {
         }
     }
 };
-var tier = {
+const tier = {
     parameterPath: ["options", "tier"],
     mapper: {
         serializedName: "x-ms-access-tier",
@@ -25915,7 +24855,7 @@ var tier = {
         }
     }
 };
-var rehydratePriority = {
+const rehydratePriority = {
     parameterPath: ["options", "rehydratePriority"],
     mapper: {
         serializedName: "x-ms-rehydrate-priority",
@@ -25926,7 +24866,7 @@ var rehydratePriority = {
         }
     }
 };
-var sourceIfTags = {
+const sourceIfTags = {
     parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfTags"],
     mapper: {
         serializedName: "x-ms-source-if-tags",
@@ -25936,7 +24876,7 @@ var sourceIfTags = {
         }
     }
 };
-var copySource = {
+const copySource = {
     parameterPath: "copySource",
     mapper: {
         serializedName: "x-ms-copy-source",
@@ -25947,7 +24887,7 @@ var copySource = {
         }
     }
 };
-var blobTagsString = {
+const blobTagsString = {
     parameterPath: ["options", "blobTagsString"],
     mapper: {
         serializedName: "x-ms-tags",
@@ -25957,7 +24897,7 @@ var blobTagsString = {
         }
     }
 };
-var sealBlob = {
+const sealBlob = {
     parameterPath: ["options", "sealBlob"],
     mapper: {
         serializedName: "x-ms-seal-blob",
@@ -25967,7 +24907,7 @@ var sealBlob = {
         }
     }
 };
-var xMsRequiresSync = {
+const xMsRequiresSync = {
     parameterPath: "xMsRequiresSync",
     mapper: {
         defaultValue: "true",
@@ -25978,7 +24918,7 @@ var xMsRequiresSync = {
         }
     }
 };
-var sourceContentMD5 = {
+const sourceContentMD5 = {
     parameterPath: ["options", "sourceContentMD5"],
     mapper: {
         serializedName: "x-ms-source-content-md5",
@@ -25988,7 +24928,7 @@ var sourceContentMD5 = {
         }
     }
 };
-var comp13 = {
+const comp13 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "copy",
@@ -25999,7 +24939,7 @@ var comp13 = {
         }
     }
 };
-var copyActionAbortConstant = {
+const copyActionAbortConstant = {
     parameterPath: "copyActionAbortConstant",
     mapper: {
         defaultValue: "abort",
@@ -26010,7 +24950,7 @@ var copyActionAbortConstant = {
         }
     }
 };
-var copyId = {
+const copyId = {
     parameterPath: "copyId",
     mapper: {
         serializedName: "copyid",
@@ -26021,7 +24961,7 @@ var copyId = {
         }
     }
 };
-var comp14 = {
+const comp14 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "tier",
@@ -26032,7 +24972,7 @@ var comp14 = {
         }
     }
 };
-var tier1 = {
+const tier1 = {
     parameterPath: "tier",
     mapper: {
         serializedName: "x-ms-access-tier",
@@ -26059,11 +24999,11 @@ var tier1 = {
         }
     }
 };
-var queryRequest = {
+const queryRequest = {
     parameterPath: ["options", "queryRequest"],
     mapper: QueryRequest
 };
-var comp15 = {
+const comp15 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "query",
@@ -26074,7 +25014,7 @@ var comp15 = {
         }
     }
 };
-var comp16 = {
+const comp16 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "tags",
@@ -26085,11 +25025,11 @@ var comp16 = {
         }
     }
 };
-var tags = {
+const tags = {
     parameterPath: ["options", "tags"],
     mapper: BlobTags
 };
-var transactionalContentMD5 = {
+const transactionalContentMD5 = {
     parameterPath: ["options", "transactionalContentMD5"],
     mapper: {
         serializedName: "Content-MD5",
@@ -26099,7 +25039,7 @@ var transactionalContentMD5 = {
         }
     }
 };
-var transactionalContentCrc64 = {
+const transactionalContentCrc64 = {
     parameterPath: ["options", "transactionalContentCrc64"],
     mapper: {
         serializedName: "x-ms-content-crc64",
@@ -26109,7 +25049,7 @@ var transactionalContentCrc64 = {
         }
     }
 };
-var blobType = {
+const blobType = {
     parameterPath: "blobType",
     mapper: {
         defaultValue: "PageBlob",
@@ -26120,7 +25060,7 @@ var blobType = {
         }
     }
 };
-var blobContentLength = {
+const blobContentLength = {
     parameterPath: "blobContentLength",
     mapper: {
         serializedName: "x-ms-blob-content-length",
@@ -26131,7 +25071,7 @@ var blobContentLength = {
         }
     }
 };
-var blobSequenceNumber = {
+const blobSequenceNumber = {
     parameterPath: ["options", "blobSequenceNumber"],
     mapper: {
         serializedName: "x-ms-blob-sequence-number",
@@ -26141,7 +25081,7 @@ var blobSequenceNumber = {
         }
     }
 };
-var contentType2 = {
+const contentType2 = {
     parameterPath: ["options", "contentType"],
     mapper: {
         defaultValue: "application/octet-stream",
@@ -26152,7 +25092,7 @@ var contentType2 = {
         }
     }
 };
-var body1 = {
+const body1 = {
     parameterPath: "body",
     mapper: {
         serializedName: "body",
@@ -26163,7 +25103,7 @@ var body1 = {
         }
     }
 };
-var accept2 = {
+const accept2 = {
     parameterPath: "accept",
     mapper: {
         defaultValue: "application/xml",
@@ -26174,7 +25114,7 @@ var accept2 = {
         }
     }
 };
-var comp17 = {
+const comp17 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "page",
@@ -26185,7 +25125,7 @@ var comp17 = {
         }
     }
 };
-var pageWrite = {
+const pageWrite = {
     parameterPath: "pageWrite",
     mapper: {
         defaultValue: "update",
@@ -26196,7 +25136,7 @@ var pageWrite = {
         }
     }
 };
-var ifSequenceNumberLessThanOrEqualTo = {
+const ifSequenceNumberLessThanOrEqualTo = {
     parameterPath: [
         "options",
         "sequenceNumberAccessConditions",
@@ -26210,7 +25150,7 @@ var ifSequenceNumberLessThanOrEqualTo = {
         }
     }
 };
-var ifSequenceNumberLessThan = {
+const ifSequenceNumberLessThan = {
     parameterPath: [
         "options",
         "sequenceNumberAccessConditions",
@@ -26224,7 +25164,7 @@ var ifSequenceNumberLessThan = {
         }
     }
 };
-var ifSequenceNumberEqualTo = {
+const ifSequenceNumberEqualTo = {
     parameterPath: [
         "options",
         "sequenceNumberAccessConditions",
@@ -26238,7 +25178,7 @@ var ifSequenceNumberEqualTo = {
         }
     }
 };
-var pageWrite1 = {
+const pageWrite1 = {
     parameterPath: "pageWrite",
     mapper: {
         defaultValue: "clear",
@@ -26249,7 +25189,7 @@ var pageWrite1 = {
         }
     }
 };
-var sourceUrl = {
+const sourceUrl = {
     parameterPath: "sourceUrl",
     mapper: {
         serializedName: "x-ms-copy-source",
@@ -26260,7 +25200,7 @@ var sourceUrl = {
         }
     }
 };
-var sourceRange = {
+const sourceRange = {
     parameterPath: "sourceRange",
     mapper: {
         serializedName: "x-ms-source-range",
@@ -26271,7 +25211,7 @@ var sourceRange = {
         }
     }
 };
-var sourceContentCrc64 = {
+const sourceContentCrc64 = {
     parameterPath: ["options", "sourceContentCrc64"],
     mapper: {
         serializedName: "x-ms-source-content-crc64",
@@ -26281,7 +25221,7 @@ var sourceContentCrc64 = {
         }
     }
 };
-var range1 = {
+const range1 = {
     parameterPath: "range",
     mapper: {
         serializedName: "x-ms-range",
@@ -26292,7 +25232,7 @@ var range1 = {
         }
     }
 };
-var comp18 = {
+const comp18 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "pagelist",
@@ -26303,7 +25243,7 @@ var comp18 = {
         }
     }
 };
-var prevsnapshot = {
+const prevsnapshot = {
     parameterPath: ["options", "prevsnapshot"],
     mapper: {
         serializedName: "prevsnapshot",
@@ -26313,7 +25253,7 @@ var prevsnapshot = {
         }
     }
 };
-var prevSnapshotUrl = {
+const prevSnapshotUrl = {
     parameterPath: ["options", "prevSnapshotUrl"],
     mapper: {
         serializedName: "x-ms-previous-snapshot-url",
@@ -26323,7 +25263,7 @@ var prevSnapshotUrl = {
         }
     }
 };
-var sequenceNumberAction = {
+const sequenceNumberAction = {
     parameterPath: "sequenceNumberAction",
     mapper: {
         serializedName: "x-ms-sequence-number-action",
@@ -26335,7 +25275,7 @@ var sequenceNumberAction = {
         }
     }
 };
-var comp19 = {
+const comp19 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "incrementalcopy",
@@ -26346,7 +25286,7 @@ var comp19 = {
         }
     }
 };
-var blobType1 = {
+const blobType1 = {
     parameterPath: "blobType",
     mapper: {
         defaultValue: "AppendBlob",
@@ -26357,7 +25297,7 @@ var blobType1 = {
         }
     }
 };
-var comp20 = {
+const comp20 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "appendblock",
@@ -26368,7 +25308,7 @@ var comp20 = {
         }
     }
 };
-var maxSize = {
+const maxSize = {
     parameterPath: ["options", "appendPositionAccessConditions", "maxSize"],
     mapper: {
         serializedName: "x-ms-blob-condition-maxsize",
@@ -26378,7 +25318,7 @@ var maxSize = {
         }
     }
 };
-var appendPosition = {
+const appendPosition = {
     parameterPath: [
         "options",
         "appendPositionAccessConditions",
@@ -26392,7 +25332,7 @@ var appendPosition = {
         }
     }
 };
-var sourceRange1 = {
+const sourceRange1 = {
     parameterPath: ["options", "sourceRange"],
     mapper: {
         serializedName: "x-ms-source-range",
@@ -26402,7 +25342,7 @@ var sourceRange1 = {
         }
     }
 };
-var comp21 = {
+const comp21 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "seal",
@@ -26413,7 +25353,7 @@ var comp21 = {
         }
     }
 };
-var blobType2 = {
+const blobType2 = {
     parameterPath: "blobType",
     mapper: {
         defaultValue: "BlockBlob",
@@ -26424,7 +25364,7 @@ var blobType2 = {
         }
     }
 };
-var copySourceBlobProperties = {
+const copySourceBlobProperties = {
     parameterPath: ["options", "copySourceBlobProperties"],
     mapper: {
         serializedName: "x-ms-copy-source-blob-properties",
@@ -26434,7 +25374,7 @@ var copySourceBlobProperties = {
         }
     }
 };
-var comp22 = {
+const comp22 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "block",
@@ -26445,7 +25385,7 @@ var comp22 = {
         }
     }
 };
-var blockId = {
+const blockId = {
     parameterPath: "blockId",
     mapper: {
         serializedName: "blockid",
@@ -26456,11 +25396,11 @@ var blockId = {
         }
     }
 };
-var blocks = {
+const blocks = {
     parameterPath: "blocks",
     mapper: BlockLookupList
 };
-var comp23 = {
+const comp23 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "blocklist",
@@ -26471,7 +25411,7 @@ var comp23 = {
         }
     }
 };
-var listType = {
+const listType = {
     parameterPath: "listType",
     mapper: {
         defaultValue: "committed",
@@ -26493,12 +25433,12 @@ var listType = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a Service. */
-var Service = /** @class */ (function () {
+class Service {
     /**
      * Initialize a new instance of the class Service class.
      * @param client Reference to the service client
      */
-    function Service(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -26507,69 +25447,69 @@ var Service = /** @class */ (function () {
      * @param blobServiceProperties The StorageService properties.
      * @param options The options parameters.
      */
-    Service.prototype.setProperties = function (blobServiceProperties, options) {
-        var operationArguments = {
-            blobServiceProperties: blobServiceProperties,
+    setProperties(blobServiceProperties, options) {
+        const operationArguments = {
+            blobServiceProperties,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setPropertiesOperationSpec);
-    };
+    }
     /**
      * gets the properties of a storage account's Blob service, including properties for Storage Analytics
      * and CORS (Cross-Origin Resource Sharing) rules.
      * @param options The options parameters.
      */
-    Service.prototype.getProperties = function (options) {
-        var operationArguments = {
+    getProperties(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec);
-    };
+    }
     /**
      * Retrieves statistics related to replication for the Blob service. It is only available on the
      * secondary location endpoint when read-access geo-redundant replication is enabled for the storage
      * account.
      * @param options The options parameters.
      */
-    Service.prototype.getStatistics = function (options) {
-        var operationArguments = {
+    getStatistics(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getStatisticsOperationSpec);
-    };
+    }
     /**
      * The List Containers Segment operation returns a list of the containers under the specified account
      * @param options The options parameters.
      */
-    Service.prototype.listContainersSegment = function (options) {
-        var operationArguments = {
+    listContainersSegment(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, listContainersSegmentOperationSpec);
-    };
+    }
     /**
      * Retrieves a user delegation key for the Blob service. This is only a valid operation when using
      * bearer token authentication.
      * @param keyInfo Key information
      * @param options The options parameters.
      */
-    Service.prototype.getUserDelegationKey = function (keyInfo, options) {
-        var operationArguments = {
-            keyInfo: keyInfo,
+    getUserDelegationKey(keyInfo, options) {
+        const operationArguments = {
+            keyInfo,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getUserDelegationKeyOperationSpec);
-    };
+    }
     /**
      * Returns the sku name and account kind
      * @param options The options parameters.
      */
-    Service.prototype.getAccountInfo = function (options) {
-        var operationArguments = {
+    getAccountInfo(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec);
-    };
+    }
     /**
      * The Batch operation allows multiple API calls to be embedded into a single HTTP request.
      * @param contentLength The length of the request.
@@ -26578,32 +25518,31 @@ var Service = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    Service.prototype.submitBatch = function (contentLength, multipartContentType, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            multipartContentType: multipartContentType,
-            body: body,
+    submitBatch(contentLength, multipartContentType, body, options) {
+        const operationArguments = {
+            contentLength,
+            multipartContentType,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec);
-    };
+    }
     /**
      * The Filter Blobs operation enables callers to list blobs across all containers whose tags match a
      * given search expression.  Filter blobs searches across all containers within a storage account but
      * can be scoped within the expression to a single container.
      * @param options The options parameters.
      */
-    Service.prototype.filterBlobs = function (options) {
-        var operationArguments = {
+    filterBlobs(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, filterBlobsOperationSpec);
-    };
-    return Service;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var setPropertiesOperationSpec = {
+const xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const setPropertiesOperationSpec = {
     path: "/",
     httpMethod: "PUT",
     responses: {
@@ -26633,7 +25572,7 @@ var setPropertiesOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer
 };
-var getPropertiesOperationSpec = {
+const getPropertiesOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -26660,7 +25599,7 @@ var getPropertiesOperationSpec = {
     isXML: true,
     serializer: xmlSerializer
 };
-var getStatisticsOperationSpec = {
+const getStatisticsOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -26687,7 +25626,7 @@ var getStatisticsOperationSpec = {
     isXML: true,
     serializer: xmlSerializer
 };
-var listContainersSegmentOperationSpec = {
+const listContainersSegmentOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -26717,7 +25656,7 @@ var listContainersSegmentOperationSpec = {
     isXML: true,
     serializer: xmlSerializer
 };
-var getUserDelegationKeyOperationSpec = {
+const getUserDelegationKeyOperationSpec = {
     path: "/",
     httpMethod: "POST",
     responses: {
@@ -26748,7 +25687,7 @@ var getUserDelegationKeyOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer
 };
-var getAccountInfoOperationSpec = {
+const getAccountInfoOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -26766,7 +25705,7 @@ var getAccountInfoOperationSpec = {
     isXML: true,
     serializer: xmlSerializer
 };
-var submitBatchOperationSpec = {
+const submitBatchOperationSpec = {
     path: "/",
     httpMethod: "POST",
     responses: {
@@ -26798,7 +25737,7 @@ var submitBatchOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer
 };
-var filterBlobsOperationSpec = {
+const filterBlobsOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -26836,12 +25775,12 @@ var filterBlobsOperationSpec = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a Container. */
-var Container = /** @class */ (function () {
+class Container {
     /**
      * Initialize a new instance of the class Container class.
      * @param client Reference to the service client
      */
-    function Container(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -26849,88 +25788,88 @@ var Container = /** @class */ (function () {
      * exists, the operation fails
      * @param options The options parameters.
      */
-    Container.prototype.create = function (options) {
-        var operationArguments = {
+    create(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, createOperationSpec);
-    };
+    }
     /**
      * returns all user-defined metadata and system properties for the specified container. The data
      * returned does not include the container's list of blobs
      * @param options The options parameters.
      */
-    Container.prototype.getProperties = function (options) {
-        var operationArguments = {
+    getProperties(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$1);
-    };
+    }
     /**
      * operation marks the specified container for deletion. The container and any blobs contained within
      * it are later deleted during garbage collection
      * @param options The options parameters.
      */
-    Container.prototype.delete = function (options) {
-        var operationArguments = {
+    delete(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, deleteOperationSpec);
-    };
+    }
     /**
      * operation sets one or more user-defined name-value pairs for the specified container.
      * @param options The options parameters.
      */
-    Container.prototype.setMetadata = function (options) {
-        var operationArguments = {
+    setMetadata(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec);
-    };
+    }
     /**
      * gets the permissions for the specified container. The permissions indicate whether container data
      * may be accessed publicly.
      * @param options The options parameters.
      */
-    Container.prototype.getAccessPolicy = function (options) {
-        var operationArguments = {
+    getAccessPolicy(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccessPolicyOperationSpec);
-    };
+    }
     /**
      * sets the permissions for the specified container. The permissions indicate whether blobs in a
      * container may be accessed publicly.
      * @param options The options parameters.
      */
-    Container.prototype.setAccessPolicy = function (options) {
-        var operationArguments = {
+    setAccessPolicy(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setAccessPolicyOperationSpec);
-    };
+    }
     /**
      * Restores a previously-deleted container.
      * @param options The options parameters.
      */
-    Container.prototype.restore = function (options) {
-        var operationArguments = {
+    restore(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, restoreOperationSpec);
-    };
+    }
     /**
      * Renames an existing container.
      * @param sourceContainerName Required.  Specifies the name of the container to rename.
      * @param options The options parameters.
      */
-    Container.prototype.rename = function (sourceContainerName, options) {
-        var operationArguments = {
-            sourceContainerName: sourceContainerName,
+    rename(sourceContainerName, options) {
+        const operationArguments = {
+            sourceContainerName,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, renameOperationSpec);
-    };
+    }
     /**
      * The Batch operation allows multiple API calls to be embedded into a single HTTP request.
      * @param contentLength The length of the request.
@@ -26939,63 +25878,63 @@ var Container = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    Container.prototype.submitBatch = function (contentLength, multipartContentType, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            multipartContentType: multipartContentType,
-            body: body,
+    submitBatch(contentLength, multipartContentType, body, options) {
+        const operationArguments = {
+            contentLength,
+            multipartContentType,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec$1);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
      * @param options The options parameters.
      */
-    Container.prototype.acquireLease = function (options) {
-        var operationArguments = {
+    acquireLease(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
      * @param leaseId Specifies the current lease ID on the resource.
      * @param options The options parameters.
      */
-    Container.prototype.releaseLease = function (leaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
+    releaseLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
      * @param leaseId Specifies the current lease ID on the resource.
      * @param options The options parameters.
      */
-    Container.prototype.renewLease = function (leaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
+    renewLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
      * @param options The options parameters.
      */
-    Container.prototype.breakLease = function (options) {
-        var operationArguments = {
+    breakLease(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
@@ -27005,24 +25944,24 @@ var Container = /** @class */ (function () {
      *                        (String) for a list of valid GUID string formats.
      * @param options The options parameters.
      */
-    Container.prototype.changeLease = function (leaseId, proposedLeaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
-            proposedLeaseId: proposedLeaseId,
+    changeLease(leaseId, proposedLeaseId, options) {
+        const operationArguments = {
+            leaseId,
+            proposedLeaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] The List Blobs operation returns a list of the blobs under the specified container
      * @param options The options parameters.
      */
-    Container.prototype.listBlobFlatSegment = function (options) {
-        var operationArguments = {
+    listBlobFlatSegment(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, listBlobFlatSegmentOperationSpec);
-    };
+    }
     /**
      * [Update] The List Blobs operation returns a list of the blobs under the specified container
      * @param delimiter When the request includes this parameter, the operation returns a BlobPrefix
@@ -27031,28 +25970,27 @@ var Container = /** @class */ (function () {
      *                  character or a string.
      * @param options The options parameters.
      */
-    Container.prototype.listBlobHierarchySegment = function (delimiter, options) {
-        var operationArguments = {
-            delimiter: delimiter,
+    listBlobHierarchySegment(delimiter, options) {
+        const operationArguments = {
+            delimiter,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, listBlobHierarchySegmentOperationSpec);
-    };
+    }
     /**
      * Returns the sku name and account kind
      * @param options The options parameters.
      */
-    Container.prototype.getAccountInfo = function (options) {
-        var operationArguments = {
+    getAccountInfo(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$1);
-    };
-    return Container;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var createOperationSpec = {
+const xmlSerializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const createOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27078,7 +26016,7 @@ var createOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var getPropertiesOperationSpec$1 = {
+const getPropertiesOperationSpec$1 = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -27101,7 +26039,7 @@ var getPropertiesOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var deleteOperationSpec = {
+const deleteOperationSpec = {
     path: "/{containerName}",
     httpMethod: "DELETE",
     responses: {
@@ -27126,7 +26064,7 @@ var deleteOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var setMetadataOperationSpec = {
+const setMetadataOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27155,7 +26093,7 @@ var setMetadataOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var getAccessPolicyOperationSpec = {
+const getAccessPolicyOperationSpec = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -27194,7 +26132,7 @@ var getAccessPolicyOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var setAccessPolicyOperationSpec = {
+const setAccessPolicyOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27228,7 +26166,7 @@ var setAccessPolicyOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer$1
 };
-var restoreOperationSpec = {
+const restoreOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27256,7 +26194,7 @@ var restoreOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var renameOperationSpec = {
+const renameOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27284,7 +26222,7 @@ var renameOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var submitBatchOperationSpec$1 = {
+const submitBatchOperationSpec$1 = {
     path: "/{containerName}",
     httpMethod: "POST",
     responses: {
@@ -27320,7 +26258,7 @@ var submitBatchOperationSpec$1 = {
     mediaType: "xml",
     serializer: xmlSerializer$1
 };
-var acquireLeaseOperationSpec = {
+const acquireLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27351,7 +26289,7 @@ var acquireLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var releaseLeaseOperationSpec = {
+const releaseLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27381,7 +26319,7 @@ var releaseLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var renewLeaseOperationSpec = {
+const renewLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27411,7 +26349,7 @@ var renewLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var breakLeaseOperationSpec = {
+const breakLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27441,7 +26379,7 @@ var breakLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var changeLeaseOperationSpec = {
+const changeLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -27472,7 +26410,7 @@ var changeLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var listBlobFlatSegmentOperationSpec = {
+const listBlobFlatSegmentOperationSpec = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -27503,7 +26441,7 @@ var listBlobFlatSegmentOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var listBlobHierarchySegmentOperationSpec = {
+const listBlobHierarchySegmentOperationSpec = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -27535,7 +26473,7 @@ var listBlobHierarchySegmentOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var getAccountInfoOperationSpec$1 = {
+const getAccountInfoOperationSpec$1 = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -27562,12 +26500,12 @@ var getAccountInfoOperationSpec$1 = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a Blob. */
-var Blob$1 = /** @class */ (function () {
+class Blob$1 {
     /**
      * Initialize a new instance of the class Blob class.
      * @param client Reference to the service client
      */
-    function Blob(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -27575,23 +26513,23 @@ var Blob$1 = /** @class */ (function () {
      * properties. You can also call Download to read a snapshot.
      * @param options The options parameters.
      */
-    Blob.prototype.download = function (options) {
-        var operationArguments = {
+    download(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, downloadOperationSpec);
-    };
+    }
     /**
      * The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system
      * properties for the blob. It does not return the content of the blob.
      * @param options The options parameters.
      */
-    Blob.prototype.getProperties = function (options) {
-        var operationArguments = {
+    getProperties(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$2);
-    };
+    }
     /**
      * If the storage account's soft delete feature is disabled then, when a blob is deleted, it is
      * permanently removed from the storage account. If the storage account's soft delete feature is
@@ -27607,32 +26545,32 @@ var Blob$1 = /** @class */ (function () {
      * (ResourceNotFound).
      * @param options The options parameters.
      */
-    Blob.prototype.delete = function (options) {
-        var operationArguments = {
+    delete(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, deleteOperationSpec$1);
-    };
+    }
     /**
      * Set the owner, group, permissions, or access control list for a blob.
      * @param options The options parameters.
      */
-    Blob.prototype.setAccessControl = function (options) {
-        var operationArguments = {
+    setAccessControl(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setAccessControlOperationSpec);
-    };
+    }
     /**
      * Get the owner, group, permissions, or access control list for a blob.
      * @param options The options parameters.
      */
-    Blob.prototype.getAccessControl = function (options) {
-        var operationArguments = {
+    getAccessControl(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccessControlOperationSpec);
-    };
+    }
     /**
      * Rename a blob/file.  By default, the destination is overwritten and if the destination already
      * exists and has a lease the lease is broken.  This operation supports conditional HTTP requests.  For
@@ -27644,93 +26582,93 @@ var Blob$1 = /** @class */ (function () {
      *                     existing properties; otherwise, the existing properties will be preserved.
      * @param options The options parameters.
      */
-    Blob.prototype.rename = function (renameSource, options) {
-        var operationArguments = {
-            renameSource: renameSource,
+    rename(renameSource, options) {
+        const operationArguments = {
+            renameSource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, renameOperationSpec$1);
-    };
+    }
     /**
      * Undelete a blob that was previously soft deleted
      * @param options The options parameters.
      */
-    Blob.prototype.undelete = function (options) {
-        var operationArguments = {
+    undelete(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, undeleteOperationSpec);
-    };
+    }
     /**
      * Sets the time a blob will expire and be deleted.
      * @param expiryOptions Required. Indicates mode of the expiry time
      * @param options The options parameters.
      */
-    Blob.prototype.setExpiry = function (expiryOptions, options) {
-        var operationArguments = {
-            expiryOptions: expiryOptions,
+    setExpiry(expiryOptions, options) {
+        const operationArguments = {
+            expiryOptions,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setExpiryOperationSpec);
-    };
+    }
     /**
      * The Set HTTP Headers operation sets system properties on the blob
      * @param options The options parameters.
      */
-    Blob.prototype.setHttpHeaders = function (options) {
-        var operationArguments = {
+    setHttpHeaders(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setHttpHeadersOperationSpec);
-    };
+    }
     /**
      * The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more
      * name-value pairs
      * @param options The options parameters.
      */
-    Blob.prototype.setMetadata = function (options) {
-        var operationArguments = {
+    setMetadata(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
      * @param options The options parameters.
      */
-    Blob.prototype.acquireLease = function (options) {
-        var operationArguments = {
+    acquireLease(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
      * @param leaseId Specifies the current lease ID on the resource.
      * @param options The options parameters.
      */
-    Blob.prototype.releaseLease = function (leaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
+    releaseLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
      * @param leaseId Specifies the current lease ID on the resource.
      * @param options The options parameters.
      */
-    Blob.prototype.renewLease = function (leaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
+    renewLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
@@ -27740,35 +26678,35 @@ var Blob$1 = /** @class */ (function () {
      *                        (String) for a list of valid GUID string formats.
      * @param options The options parameters.
      */
-    Blob.prototype.changeLease = function (leaseId, proposedLeaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
-            proposedLeaseId: proposedLeaseId,
+    changeLease(leaseId, proposedLeaseId, options) {
+        const operationArguments = {
+            leaseId,
+            proposedLeaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
      * @param options The options parameters.
      */
-    Blob.prototype.breakLease = function (options) {
-        var operationArguments = {
+    breakLease(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec$1);
-    };
+    }
     /**
      * The Create Snapshot operation creates a read-only snapshot of a blob
      * @param options The options parameters.
      */
-    Blob.prototype.createSnapshot = function (options) {
-        var operationArguments = {
+    createSnapshot(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, createSnapshotOperationSpec);
-    };
+    }
     /**
      * The Start Copy From URL operation copies a blob or an internet resource to a new blob.
      * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
@@ -27777,13 +26715,13 @@ var Blob$1 = /** @class */ (function () {
      *                   access signature.
      * @param options The options parameters.
      */
-    Blob.prototype.startCopyFromURL = function (copySource, options) {
-        var operationArguments = {
-            copySource: copySource,
+    startCopyFromURL(copySource, options) {
+        const operationArguments = {
+            copySource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, startCopyFromURLOperationSpec);
-    };
+    }
     /**
      * The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return
      * a response until the copy is complete.
@@ -27793,13 +26731,13 @@ var Blob$1 = /** @class */ (function () {
      *                   access signature.
      * @param options The options parameters.
      */
-    Blob.prototype.copyFromURL = function (copySource, options) {
-        var operationArguments = {
-            copySource: copySource,
+    copyFromURL(copySource, options) {
+        const operationArguments = {
+            copySource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, copyFromURLOperationSpec);
-    };
+    }
     /**
      * The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination
      * blob with zero length and full metadata.
@@ -27807,13 +26745,13 @@ var Blob$1 = /** @class */ (function () {
      *               operation.
      * @param options The options parameters.
      */
-    Blob.prototype.abortCopyFromURL = function (copyId, options) {
-        var operationArguments = {
-            copyId: copyId,
+    abortCopyFromURL(copyId, options) {
+        const operationArguments = {
+            copyId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, abortCopyFromURLOperationSpec);
-    };
+    }
     /**
      * The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium
      * storage account and on a block blob in a blob storage account (locally redundant storage only). A
@@ -27823,59 +26761,58 @@ var Blob$1 = /** @class */ (function () {
      * @param tier Indicates the tier to be set on the blob.
      * @param options The options parameters.
      */
-    Blob.prototype.setTier = function (tier, options) {
-        var operationArguments = {
-            tier: tier,
+    setTier(tier, options) {
+        const operationArguments = {
+            tier,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setTierOperationSpec);
-    };
+    }
     /**
      * Returns the sku name and account kind
      * @param options The options parameters.
      */
-    Blob.prototype.getAccountInfo = function (options) {
-        var operationArguments = {
+    getAccountInfo(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$2);
-    };
+    }
     /**
      * The Query operation enables users to select/project on blob data by providing simple query
      * expressions.
      * @param options The options parameters.
      */
-    Blob.prototype.query = function (options) {
-        var operationArguments = {
+    query(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, queryOperationSpec);
-    };
+    }
     /**
      * The Get Tags operation enables users to get the tags associated with a blob.
      * @param options The options parameters.
      */
-    Blob.prototype.getTags = function (options) {
-        var operationArguments = {
+    getTags(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getTagsOperationSpec);
-    };
+    }
     /**
      * The Set Tags operation enables users to set tags on a blob.
      * @param options The options parameters.
      */
-    Blob.prototype.setTags = function (options) {
-        var operationArguments = {
+    setTags(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setTagsOperationSpec);
-    };
-    return Blob;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var downloadOperationSpec = {
+const xmlSerializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const downloadOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -27924,7 +26861,7 @@ var downloadOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var getPropertiesOperationSpec$2 = {
+const getPropertiesOperationSpec$2 = {
     path: "/{containerName}/{blob}",
     httpMethod: "HEAD",
     responses: {
@@ -27959,7 +26896,7 @@ var getPropertiesOperationSpec$2 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var deleteOperationSpec$1 = {
+const deleteOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "DELETE",
     responses: {
@@ -27993,7 +26930,7 @@ var deleteOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setAccessControlOperationSpec = {
+const setAccessControlOperationSpec = {
     path: "/{filesystem}/{path}",
     httpMethod: "PATCH",
     responses: {
@@ -28024,7 +26961,7 @@ var setAccessControlOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var getAccessControlOperationSpec = {
+const getAccessControlOperationSpec = {
     path: "/{filesystem}/{path}",
     httpMethod: "HEAD",
     responses: {
@@ -28055,7 +26992,7 @@ var getAccessControlOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var renameOperationSpec$1 = {
+const renameOperationSpec$1 = {
     path: "/{filesystem}/{path}",
     httpMethod: "PUT",
     responses: {
@@ -28096,7 +27033,7 @@ var renameOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var undeleteOperationSpec = {
+const undeleteOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28118,7 +27055,7 @@ var undeleteOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setExpiryOperationSpec = {
+const setExpiryOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28142,7 +27079,7 @@ var setExpiryOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setHttpHeadersOperationSpec = {
+const setHttpHeadersOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28176,7 +27113,7 @@ var setHttpHeadersOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setMetadataOperationSpec$1 = {
+const setMetadataOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28209,7 +27146,7 @@ var setMetadataOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var acquireLeaseOperationSpec$1 = {
+const acquireLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28239,7 +27176,7 @@ var acquireLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var releaseLeaseOperationSpec$1 = {
+const releaseLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28268,7 +27205,7 @@ var releaseLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var renewLeaseOperationSpec$1 = {
+const renewLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28297,7 +27234,7 @@ var renewLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var changeLeaseOperationSpec$1 = {
+const changeLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28327,7 +27264,7 @@ var changeLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var breakLeaseOperationSpec$1 = {
+const breakLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28356,7 +27293,7 @@ var breakLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var createSnapshotOperationSpec = {
+const createSnapshotOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28389,7 +27326,7 @@ var createSnapshotOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var startCopyFromURLOperationSpec = {
+const startCopyFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28428,7 +27365,7 @@ var startCopyFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var copyFromURLOperationSpec = {
+const copyFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28466,7 +27403,7 @@ var copyFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var abortCopyFromURLOperationSpec = {
+const abortCopyFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28494,7 +27431,7 @@ var abortCopyFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setTierOperationSpec = {
+const setTierOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28528,7 +27465,7 @@ var setTierOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var getAccountInfoOperationSpec$2 = {
+const getAccountInfoOperationSpec$2 = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -28546,7 +27483,7 @@ var getAccountInfoOperationSpec$2 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var queryOperationSpec = {
+const queryOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "POST",
     responses: {
@@ -28596,7 +27533,7 @@ var queryOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer$2
 };
-var getTagsOperationSpec = {
+const getTagsOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -28626,7 +27563,7 @@ var getTagsOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setTagsOperationSpec = {
+const setTagsOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28669,12 +27606,12 @@ var setTagsOperationSpec = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a PageBlob. */
-var PageBlob = /** @class */ (function () {
+class PageBlob {
     /**
      * Initialize a new instance of the class PageBlob class.
      * @param client Reference to the service client
      */
-    function PageBlob(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -28684,40 +27621,40 @@ var PageBlob = /** @class */ (function () {
      *                          page blob size must be aligned to a 512-byte boundary.
      * @param options The options parameters.
      */
-    PageBlob.prototype.create = function (contentLength, blobContentLength, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            blobContentLength: blobContentLength,
+    create(contentLength, blobContentLength, options) {
+        const operationArguments = {
+            contentLength,
+            blobContentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, createOperationSpec$1);
-    };
+    }
     /**
      * The Upload Pages operation writes a range of pages to a page blob
      * @param contentLength The length of the request.
      * @param body Initial data
      * @param options The options parameters.
      */
-    PageBlob.prototype.uploadPages = function (contentLength, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            body: body,
+    uploadPages(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, uploadPagesOperationSpec);
-    };
+    }
     /**
      * The Clear Pages operation clears a set of pages from a page blob
      * @param contentLength The length of the request.
      * @param options The options parameters.
      */
-    PageBlob.prototype.clearPages = function (contentLength, options) {
-        var operationArguments = {
-            contentLength: contentLength,
+    clearPages(contentLength, options) {
+        const operationArguments = {
+            contentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, clearPagesOperationSpec);
-    };
+    }
     /**
      * The Upload Pages operation writes a range of pages to a page blob where the contents are read from a
      * URL
@@ -28729,51 +27666,51 @@ var PageBlob = /** @class */ (function () {
      *              aligned and range-end is required.
      * @param options The options parameters.
      */
-    PageBlob.prototype.uploadPagesFromURL = function (sourceUrl, sourceRange, contentLength, range, options) {
-        var operationArguments = {
-            sourceUrl: sourceUrl,
-            sourceRange: sourceRange,
-            contentLength: contentLength,
-            range: range,
+    uploadPagesFromURL(sourceUrl, sourceRange, contentLength, range, options) {
+        const operationArguments = {
+            sourceUrl,
+            sourceRange,
+            contentLength,
+            range,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, uploadPagesFromURLOperationSpec);
-    };
+    }
     /**
      * The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a
      * page blob
      * @param options The options parameters.
      */
-    PageBlob.prototype.getPageRanges = function (options) {
-        var operationArguments = {
+    getPageRanges(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPageRangesOperationSpec);
-    };
+    }
     /**
      * The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were
      * changed between target blob and previous snapshot.
      * @param options The options parameters.
      */
-    PageBlob.prototype.getPageRangesDiff = function (options) {
-        var operationArguments = {
+    getPageRangesDiff(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPageRangesDiffOperationSpec);
-    };
+    }
     /**
      * Resize the Blob
      * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The
      *                          page blob size must be aligned to a 512-byte boundary.
      * @param options The options parameters.
      */
-    PageBlob.prototype.resize = function (blobContentLength, options) {
-        var operationArguments = {
-            blobContentLength: blobContentLength,
+    resize(blobContentLength, options) {
+        const operationArguments = {
+            blobContentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, resizeOperationSpec);
-    };
+    }
     /**
      * Update the sequence number of the blob
      * @param sequenceNumberAction Required if the x-ms-blob-sequence-number header is set for the request.
@@ -28781,13 +27718,13 @@ var PageBlob = /** @class */ (function () {
      *                             blob's sequence number
      * @param options The options parameters.
      */
-    PageBlob.prototype.updateSequenceNumber = function (sequenceNumberAction, options) {
-        var operationArguments = {
-            sequenceNumberAction: sequenceNumberAction,
+    updateSequenceNumber(sequenceNumberAction, options) {
+        const operationArguments = {
+            sequenceNumberAction,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, updateSequenceNumberOperationSpec);
-    };
+    }
     /**
      * The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob.
      * The snapshot is copied such that only the differential changes between the previously copied
@@ -28800,19 +27737,18 @@ var PageBlob = /** @class */ (function () {
      *                   access signature.
      * @param options The options parameters.
      */
-    PageBlob.prototype.copyIncremental = function (copySource, options) {
-        var operationArguments = {
-            copySource: copySource,
+    copyIncremental(copySource, options) {
+        const operationArguments = {
+            copySource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, copyIncrementalOperationSpec);
-    };
-    return PageBlob;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$3 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);
-var createOperationSpec$1 = {
+const xmlSerializer$3 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const createOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28857,7 +27793,7 @@ var createOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var uploadPagesOperationSpec = {
+const uploadPagesOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28897,9 +27833,9 @@ var uploadPagesOperationSpec = {
         ifSequenceNumberEqualTo
     ],
     mediaType: "binary",
-    serializer: serializer
+    serializer
 };
-var clearPagesOperationSpec = {
+const clearPagesOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28937,7 +27873,7 @@ var clearPagesOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var uploadPagesFromURLOperationSpec = {
+const uploadPagesFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -28983,7 +27919,7 @@ var uploadPagesFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var getPageRangesOperationSpec = {
+const getPageRangesOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -29017,7 +27953,7 @@ var getPageRangesOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var getPageRangesDiffOperationSpec = {
+const getPageRangesDiffOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -29053,7 +27989,7 @@ var getPageRangesDiffOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var resizeOperationSpec = {
+const resizeOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29086,7 +28022,7 @@ var resizeOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var updateSequenceNumberOperationSpec = {
+const updateSequenceNumberOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29116,7 +28052,7 @@ var updateSequenceNumberOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var copyIncrementalOperationSpec = {
+const copyIncrementalOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29153,12 +28089,12 @@ var copyIncrementalOperationSpec = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a AppendBlob. */
-var AppendBlob = /** @class */ (function () {
+class AppendBlob {
     /**
      * Initialize a new instance of the class AppendBlob class.
      * @param client Reference to the service client
      */
-    function AppendBlob(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -29166,13 +28102,13 @@ var AppendBlob = /** @class */ (function () {
      * @param contentLength The length of the request.
      * @param options The options parameters.
      */
-    AppendBlob.prototype.create = function (contentLength, options) {
-        var operationArguments = {
-            contentLength: contentLength,
+    create(contentLength, options) {
+        const operationArguments = {
+            contentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, createOperationSpec$2);
-    };
+    }
     /**
      * The Append Block operation commits a new block of data to the end of an existing append blob. The
      * Append Block operation is permitted only if the blob was created with x-ms-blob-type set to
@@ -29181,14 +28117,14 @@ var AppendBlob = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    AppendBlob.prototype.appendBlock = function (contentLength, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            body: body,
+    appendBlock(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, appendBlockOperationSpec);
-    };
+    }
     /**
      * The Append Block operation commits a new block of data to the end of an existing append blob where
      * the contents are read from a source url. The Append Block operation is permitted only if the blob
@@ -29198,31 +28134,30 @@ var AppendBlob = /** @class */ (function () {
      * @param contentLength The length of the request.
      * @param options The options parameters.
      */
-    AppendBlob.prototype.appendBlockFromUrl = function (sourceUrl, contentLength, options) {
-        var operationArguments = {
-            sourceUrl: sourceUrl,
-            contentLength: contentLength,
+    appendBlockFromUrl(sourceUrl, contentLength, options) {
+        const operationArguments = {
+            sourceUrl,
+            contentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, appendBlockFromUrlOperationSpec);
-    };
+    }
     /**
      * The Seal operation seals the Append Blob to make it read-only. Seal is supported only on version
      * 2019-12-12 version or later.
      * @param options The options parameters.
      */
-    AppendBlob.prototype.seal = function (options) {
-        var operationArguments = {
+    seal(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, sealOperationSpec);
-    };
-    return AppendBlob;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$4 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var serializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ false);
-var createOperationSpec$2 = {
+const xmlSerializer$4 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const createOperationSpec$2 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29264,7 +28199,7 @@ var createOperationSpec$2 = {
     isXML: true,
     serializer: xmlSerializer$4
 };
-var appendBlockOperationSpec = {
+const appendBlockOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29303,7 +28238,7 @@ var appendBlockOperationSpec = {
     mediaType: "binary",
     serializer: serializer$1
 };
-var appendBlockFromUrlOperationSpec = {
+const appendBlockFromUrlOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29347,7 +28282,7 @@ var appendBlockFromUrlOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$4
 };
-var sealOperationSpec = {
+const sealOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29384,12 +28319,12 @@ var sealOperationSpec = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a BlockBlob. */
-var BlockBlob = /** @class */ (function () {
+class BlockBlob {
     /**
      * Initialize a new instance of the class BlockBlob class.
      * @param client Reference to the service client
      */
-    function BlockBlob(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -29401,14 +28336,14 @@ var BlockBlob = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    BlockBlob.prototype.upload = function (contentLength, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            body: body,
+    upload(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, uploadOperationSpec);
-    };
+    }
     /**
      * The Put Blob from URL operation creates a new Block Blob where the contents of the blob are read
      * from a given URL.  This API is supported beginning with the 2020-04-08 version. Partial updates are
@@ -29422,14 +28357,14 @@ var BlockBlob = /** @class */ (function () {
      *                   access signature.
      * @param options The options parameters.
      */
-    BlockBlob.prototype.putBlobFromUrl = function (contentLength, copySource, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            copySource: copySource,
+    putBlobFromUrl(contentLength, copySource, options) {
+        const operationArguments = {
+            contentLength,
+            copySource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, putBlobFromUrlOperationSpec);
-    };
+    }
     /**
      * The Stage Block operation creates a new block to be committed as part of a blob
      * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string
@@ -29439,15 +28374,15 @@ var BlockBlob = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    BlockBlob.prototype.stageBlock = function (blockId, contentLength, body, options) {
-        var operationArguments = {
-            blockId: blockId,
-            contentLength: contentLength,
-            body: body,
+    stageBlock(blockId, contentLength, body, options) {
+        const operationArguments = {
+            blockId,
+            contentLength,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, stageBlockOperationSpec);
-    };
+    }
     /**
      * The Stage Block operation creates a new block to be committed as part of a blob where the contents
      * are read from a URL.
@@ -29458,15 +28393,15 @@ var BlockBlob = /** @class */ (function () {
      * @param sourceUrl Specify a URL to the copy source.
      * @param options The options parameters.
      */
-    BlockBlob.prototype.stageBlockFromURL = function (blockId, contentLength, sourceUrl, options) {
-        var operationArguments = {
-            blockId: blockId,
-            contentLength: contentLength,
-            sourceUrl: sourceUrl,
+    stageBlockFromURL(blockId, contentLength, sourceUrl, options) {
+        const operationArguments = {
+            blockId,
+            contentLength,
+            sourceUrl,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, stageBlockFromURLOperationSpec);
-    };
+    }
     /**
      * The Commit Block List operation writes a blob by specifying the list of block IDs that make up the
      * blob. In order to be written as part of a blob, a block must have been successfully written to the
@@ -29478,13 +28413,13 @@ var BlockBlob = /** @class */ (function () {
      * @param blocks
      * @param options The options parameters.
      */
-    BlockBlob.prototype.commitBlockList = function (blocks, options) {
-        var operationArguments = {
-            blocks: blocks,
+    commitBlockList(blocks, options) {
+        const operationArguments = {
+            blocks,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, commitBlockListOperationSpec);
-    };
+    }
     /**
      * The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block
      * blob
@@ -29492,19 +28427,18 @@ var BlockBlob = /** @class */ (function () {
      *                 blocks, or both lists together.
      * @param options The options parameters.
      */
-    BlockBlob.prototype.getBlockList = function (listType, options) {
-        var operationArguments = {
-            listType: listType,
+    getBlockList(listType, options) {
+        const operationArguments = {
+            listType,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getBlockListOperationSpec);
-    };
-    return BlockBlob;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$5 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var serializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ false);
-var uploadOperationSpec = {
+const xmlSerializer$5 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const uploadOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29550,7 +28484,7 @@ var uploadOperationSpec = {
     mediaType: "binary",
     serializer: serializer$2
 };
-var putBlobFromUrlOperationSpec = {
+const putBlobFromUrlOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29602,7 +28536,7 @@ var putBlobFromUrlOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$5
 };
-var stageBlockOperationSpec = {
+const stageBlockOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29638,7 +28572,7 @@ var stageBlockOperationSpec = {
     mediaType: "binary",
     serializer: serializer$2
 };
-var stageBlockFromURLOperationSpec = {
+const stageBlockFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29678,7 +28612,7 @@ var stageBlockFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$5
 };
-var commitBlockListOperationSpec = {
+const commitBlockListOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -29725,7 +28659,7 @@ var commitBlockListOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer$5
 };
-var getBlockListOperationSpec = {
+const getBlockListOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -29760,23 +28694,23 @@ var getBlockListOperationSpec = {
 /**
  * The `@azure/logger` configuration for this package.
  */
-var logger = logger$1.createClientLogger("storage-blob");
+const logger = logger$1.createClientLogger("storage-blob");
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var SDK_VERSION = "12.6.0";
-var SERVICE_VERSION = "2020-08-04";
-var BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB
-var BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB
-var BLOCK_BLOB_MAX_BLOCKS = 50000;
-var DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB
-var DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB
-var DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;
+const SDK_VERSION = "12.7.0";
+const SERVICE_VERSION = "2020-08-04";
+const BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB
+const BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB
+const BLOCK_BLOB_MAX_BLOCKS = 50000;
+const DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB
+const DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB
+const DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;
 /**
  * The OAuth scope to use with Azure Storage.
  */
-var StorageOAuthScopes = "https://storage.azure.com/.default";
-var URLConstants = {
+const StorageOAuthScopes = "https://storage.azure.com/.default";
+const URLConstants = {
     Parameters: {
         FORCE_BROWSER_NO_CACHE: "_",
         SIGNATURE: "sig",
@@ -29785,14 +28719,14 @@ var URLConstants = {
         TIMEOUT: "timeout"
     }
 };
-var HTTPURLConnection = {
+const HTTPURLConnection = {
     HTTP_ACCEPTED: 202,
     HTTP_CONFLICT: 409,
     HTTP_NOT_FOUND: 404,
     HTTP_PRECON_FAILED: 412,
     HTTP_RANGE_NOT_SATISFIABLE: 416
 };
-var HeaderConstants = {
+const HeaderConstants = {
     AUTHORIZATION: "Authorization",
     AUTHORIZATION_SCHEME: "Bearer",
     CONTENT_ENCODING: "Content-Encoding",
@@ -29817,16 +28751,16 @@ var HeaderConstants = {
     X_MS_ERROR_CODE: "x-ms-error-code",
     X_MS_VERSION: "x-ms-version"
 };
-var ETagNone = "";
-var ETagAny = "*";
-var SIZE_1_MB = 1 * 1024 * 1024;
-var BATCH_MAX_REQUEST = 256;
-var BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;
-var HTTP_LINE_ENDING = "\r\n";
-var HTTP_VERSION_1_1 = "HTTP/1.1";
-var EncryptionAlgorithmAES25 = "AES256";
-var DevelopmentConnectionString = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;";
-var StorageBlobLoggingAllowedHeaderNames = [
+const ETagNone = "";
+const ETagAny = "*";
+const SIZE_1_MB = 1 * 1024 * 1024;
+const BATCH_MAX_REQUEST = 256;
+const BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;
+const HTTP_LINE_ENDING = "\r\n";
+const HTTP_VERSION_1_1 = "HTTP/1.1";
+const EncryptionAlgorithmAES25 = "AES256";
+const DevelopmentConnectionString = `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;`;
+const StorageBlobLoggingAllowedHeaderNames = [
     "Access-Control-Allow-Origin",
     "Cache-Control",
     "Content-Length",
@@ -29922,7 +28856,7 @@ var StorageBlobLoggingAllowedHeaderNames = [
     "x-ms-if-tags",
     "x-ms-source-if-tags"
 ];
-var StorageBlobLoggingAllowedQueryParameters = [
+const StorageBlobLoggingAllowedQueryParameters = [
     "comp",
     "maxresults",
     "rscc",
@@ -30012,8 +28946,8 @@ var StorageBlobLoggingAllowedQueryParameters = [
  * @param url -
  */
 function escapeURLPath(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var path = urlParsed.getPath();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let path = urlParsed.getPath();
     path = path || "/";
     path = escape(path);
     urlParsed.setPath(path);
@@ -30022,12 +28956,11 @@ function escapeURLPath(url) {
 function getProxyUriFromDevConnString(connectionString) {
     // Development Connection String
     // https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key
-    var proxyUri = "";
+    let proxyUri = "";
     if (connectionString.search("DevelopmentStorageProxyUri=") !== -1) {
         // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri
-        var matchCredentials = connectionString.split(";");
-        for (var _i = 0, matchCredentials_1 = matchCredentials; _i < matchCredentials_1.length; _i++) {
-            var element = matchCredentials_1[_i];
+        const matchCredentials = connectionString.split(";");
+        for (const element of matchCredentials) {
             if (element.trim().startsWith("DevelopmentStorageProxyUri=")) {
                 proxyUri = element.trim().match("DevelopmentStorageProxyUri=(.*)")[1];
             }
@@ -30036,9 +28969,8 @@ function getProxyUriFromDevConnString(connectionString) {
     return proxyUri;
 }
 function getValueInConnString(connectionString, argument) {
-    var elements = connectionString.split(";");
-    for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {
-        var element = elements_1[_i];
+    const elements = connectionString.split(";");
+    for (const element of elements) {
         if (element.trim().startsWith(argument)) {
             return element.trim().match(argument + "=(.*)")[1];
         }
@@ -30052,24 +28984,24 @@ function getValueInConnString(connectionString, argument) {
  * @returns String key value pairs of the storage account's url and credentials.
  */
 function extractConnectionStringParts(connectionString) {
-    var proxyUri = "";
+    let proxyUri = "";
     if (connectionString.startsWith("UseDevelopmentStorage=true")) {
         // Development connection string
         proxyUri = getProxyUriFromDevConnString(connectionString);
         connectionString = DevelopmentConnectionString;
     }
     // Matching BlobEndpoint in the Account connection string
-    var blobEndpoint = getValueInConnString(connectionString, "BlobEndpoint");
+    let blobEndpoint = getValueInConnString(connectionString, "BlobEndpoint");
     // Slicing off '/' at the end if exists
     // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)
     blobEndpoint = blobEndpoint.endsWith("/") ? blobEndpoint.slice(0, -1) : blobEndpoint;
     if (connectionString.search("DefaultEndpointsProtocol=") !== -1 &&
         connectionString.search("AccountKey=") !== -1) {
         // Account connection string
-        var defaultEndpointsProtocol = "";
-        var accountName = "";
-        var accountKey = Buffer.from("accountKey", "base64");
-        var endpointSuffix = "";
+        let defaultEndpointsProtocol = "";
+        let accountName = "";
+        let accountKey = Buffer.from("accountKey", "base64");
+        let endpointSuffix = "";
         // Get account name and key
         accountName = getValueInConnString(connectionString, "AccountName");
         accountKey = Buffer.from(getValueInConnString(connectionString, "AccountKey"), "base64");
@@ -30077,7 +29009,7 @@ function extractConnectionStringParts(connectionString) {
             // BlobEndpoint is not present in the Account connection string
             // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`
             defaultEndpointsProtocol = getValueInConnString(connectionString, "DefaultEndpointsProtocol");
-            var protocol = defaultEndpointsProtocol.toLowerCase();
+            const protocol = defaultEndpointsProtocol.toLowerCase();
             if (protocol !== "https" && protocol !== "http") {
                 throw new Error("Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'");
             }
@@ -30085,7 +29017,7 @@ function extractConnectionStringParts(connectionString) {
             if (!endpointSuffix) {
                 throw new Error("Invalid EndpointSuffix in the provided Connection String");
             }
-            blobEndpoint = defaultEndpointsProtocol + "://" + accountName + ".blob." + endpointSuffix;
+            blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;
         }
         if (!accountName) {
             throw new Error("Invalid AccountName in the provided Connection String");
@@ -30096,22 +29028,22 @@ function extractConnectionStringParts(connectionString) {
         return {
             kind: "AccountConnString",
             url: blobEndpoint,
-            accountName: accountName,
-            accountKey: accountKey,
-            proxyUri: proxyUri
+            accountName,
+            accountKey,
+            proxyUri
         };
     }
     else {
         // SAS connection string
-        var accountSas = getValueInConnString(connectionString, "SharedAccessSignature");
-        var accountName = getAccountNameFromUrl(blobEndpoint);
+        const accountSas = getValueInConnString(connectionString, "SharedAccessSignature");
+        const accountName = getAccountNameFromUrl(blobEndpoint);
         if (!blobEndpoint) {
             throw new Error("Invalid BlobEndpoint in the provided SAS Connection String");
         }
         else if (!accountSas) {
             throw new Error("Invalid SharedAccessSignature in the provided SAS Connection String");
         }
-        return { kind: "SASConnString", url: blobEndpoint, accountName: accountName, accountSas: accountSas };
+        return { kind: "SASConnString", url: blobEndpoint, accountName, accountSas };
     }
 }
 /**
@@ -30135,9 +29067,9 @@ function escape(text) {
  * @returns An updated URL string
  */
 function appendToURLPath(url, name) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var path = urlParsed.getPath();
-    path = path ? (path.endsWith("/") ? "" + path + name : path + "/" + name) : name;
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let path = urlParsed.getPath();
+    path = path ? (path.endsWith("/") ? `${path}${name}` : `${path}/${name}`) : name;
     urlParsed.setPath(path);
     return urlParsed.toString();
 }
@@ -30151,7 +29083,7 @@ function appendToURLPath(url, name) {
  * @returns An updated URL string
  */
 function setURLParameter(url, name, value) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     urlParsed.setQueryParameter(name, value);
     return urlParsed.toString();
 }
@@ -30162,7 +29094,7 @@ function setURLParameter(url, name, value) {
  * @param name -
  */
 function getURLParameter(url, name) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getQueryParameterValue(name);
 }
 /**
@@ -30173,7 +29105,7 @@ function getURLParameter(url, name) {
  * @returns An updated URL string
  */
 function setURLHost(url, host) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     urlParsed.setHost(host);
     return urlParsed.toString();
 }
@@ -30183,7 +29115,7 @@ function setURLHost(url, host) {
  * @param url - Source URL string
  */
 function getURLPath(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getPath();
 }
 /**
@@ -30192,7 +29124,7 @@ function getURLPath(url) {
  * @param url - Source URL string
  */
 function getURLScheme(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getScheme();
 }
 /**
@@ -30201,17 +29133,17 @@ function getURLScheme(url) {
  * @param url - Source URL string
  */
 function getURLPathAndQuery(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var pathString = urlParsed.getPath();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    const pathString = urlParsed.getPath();
     if (!pathString) {
         throw new RangeError("Invalid url without valid path.");
     }
-    var queryString = urlParsed.getQuery() || "";
+    let queryString = urlParsed.getQuery() || "";
     queryString = queryString.trim();
     if (queryString != "") {
-        queryString = queryString.startsWith("?") ? queryString : "?" + queryString; // Ensure query string start with '?'
+        queryString = queryString.startsWith("?") ? queryString : `?${queryString}`; // Ensure query string start with '?'
     }
-    return "" + pathString + queryString;
+    return `${pathString}${queryString}`;
 }
 /**
  * Get URL query key value pairs from an URL string.
@@ -30219,24 +29151,23 @@ function getURLPathAndQuery(url) {
  * @param url -
  */
 function getURLQueries(url) {
-    var queryString = coreHttp.URLBuilder.parse(url).getQuery();
+    let queryString = coreHttp.URLBuilder.parse(url).getQuery();
     if (!queryString) {
         return {};
     }
     queryString = queryString.trim();
     queryString = queryString.startsWith("?") ? queryString.substr(1) : queryString;
-    var querySubStrings = queryString.split("&");
-    querySubStrings = querySubStrings.filter(function (value) {
-        var indexOfEqual = value.indexOf("=");
-        var lastIndexOfEqual = value.lastIndexOf("=");
+    let querySubStrings = queryString.split("&");
+    querySubStrings = querySubStrings.filter((value) => {
+        const indexOfEqual = value.indexOf("=");
+        const lastIndexOfEqual = value.lastIndexOf("=");
         return (indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1);
     });
-    var queries = {};
-    for (var _i = 0, querySubStrings_1 = querySubStrings; _i < querySubStrings_1.length; _i++) {
-        var querySubString = querySubStrings_1[_i];
-        var splitResults = querySubString.split("=");
-        var key = splitResults[0];
-        var value = splitResults[1];
+    const queries = {};
+    for (const querySubString of querySubStrings) {
+        const splitResults = querySubString.split("=");
+        const key = splitResults[0];
+        const value = splitResults[1];
         queries[key] = value;
     }
     return queries;
@@ -30249,8 +29180,8 @@ function getURLQueries(url) {
  * @returns An updated URL string.
  */
 function appendToURLQuery(url, queryParts) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var query = urlParsed.getQuery();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let query = urlParsed.getQuery();
     if (query) {
         query += "&" + queryParts;
     }
@@ -30268,10 +29199,9 @@ function appendToURLQuery(url, queryParts) {
  *                                          If false, YYYY-MM-DDThh:mm:ssZ will be returned.
  * @returns Date string in ISO8061 format, with or without 7 milliseconds component
  */
-function truncatedISO8061Date(date, withMilliseconds) {
-    if (withMilliseconds === void 0) { withMilliseconds = true; }
+function truncatedISO8061Date(date, withMilliseconds = true) {
     // Date.toISOString() will return like "2018-10-29T06:34:36.139Z"
-    var dateString = date.toISOString();
+    const dateString = date.toISOString();
     return withMilliseconds
         ? dateString.substring(0, dateString.length - 1) + "0000" + "Z"
         : dateString.substring(0, dateString.length - 5) + "Z";
@@ -30291,14 +29221,14 @@ function base64encode(content) {
  */
 function generateBlockID(blockIDPrefix, blockIndex) {
     // To generate a 64 bytes base64 string, source string should be 48
-    var maxSourceStringLength = 48;
+    const maxSourceStringLength = 48;
     // A blob can have a maximum of 100,000 uncommitted blocks at any given time
-    var maxBlockIndexLength = 6;
-    var maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;
+    const maxBlockIndexLength = 6;
+    const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;
     if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {
         blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);
     }
-    var res = blockIDPrefix +
+    const res = blockIDPrefix +
         padStart(blockIndex.toString(), maxSourceStringLength - blockIDPrefix.length, "0");
     return base64encode(res);
 }
@@ -30309,29 +29239,25 @@ function generateBlockID(blockIDPrefix, blockIndex) {
  * @param aborter -
  * @param abortError -
  */
-function delay(timeInMs, aborter, abortError) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    var timeout;
-                    var abortHandler = function () {
-                        if (timeout !== undefined) {
-                            clearTimeout(timeout);
-                        }
-                        reject(abortError);
-                    };
-                    var resolveHandler = function () {
-                        if (aborter !== undefined) {
-                            aborter.removeEventListener("abort", abortHandler);
-                        }
-                        resolve();
-                    };
-                    timeout = setTimeout(resolveHandler, timeInMs);
-                    if (aborter !== undefined) {
-                        aborter.addEventListener("abort", abortHandler);
-                    }
-                })];
-        });
+async function delay(timeInMs, aborter, abortError) {
+    return new Promise((resolve, reject) => {
+        let timeout;
+        const abortHandler = () => {
+            if (timeout !== undefined) {
+                clearTimeout(timeout);
+            }
+            reject(abortError);
+        };
+        const resolveHandler = () => {
+            if (aborter !== undefined) {
+                aborter.removeEventListener("abort", abortHandler);
+            }
+            resolve();
+        };
+        timeout = setTimeout(resolveHandler, timeInMs);
+        if (aborter !== undefined) {
+            aborter.addEventListener("abort", abortHandler);
+        }
     });
 }
 /**
@@ -30341,8 +29267,7 @@ function delay(timeInMs, aborter, abortError) {
  * @param targetLength -
  * @param padString -
  */
-function padStart(currentString, targetLength, padString) {
-    if (padString === void 0) { padString = " "; }
+function padStart(currentString, targetLength, padString = " ") {
     // TS doesn't know this code needs to run downlevel sometimes.
     // @ts-expect-error
     if (String.prototype.padStart) {
@@ -30375,8 +29300,8 @@ function iEqual(str1, str2) {
  * @returns with the account name
  */
 function getAccountNameFromUrl(url) {
-    var parsedUrl = coreHttp.URLBuilder.parse(url);
-    var accountName;
+    const parsedUrl = coreHttp.URLBuilder.parse(url);
+    let accountName;
     try {
         if (parsedUrl.getHost().split(".")[1] === "blob") {
             // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;
@@ -30402,7 +29327,7 @@ function isIpEndpointStyle(parsedUrl) {
     if (parsedUrl.getHost() == undefined) {
         return false;
     }
-    var host = parsedUrl.getHost() + (parsedUrl.getPort() == undefined ? "" : ":" + parsedUrl.getPort());
+    const host = parsedUrl.getHost() + (parsedUrl.getPort() == undefined ? "" : ":" + parsedUrl.getPort());
     // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.
     // Case 2: localhost(:port), use broad regex to match port part.
     // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.
@@ -30418,11 +29343,11 @@ function toBlobTagsString(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var tagPairs = [];
-    for (var key in tags) {
+    const tagPairs = [];
+    for (const key in tags) {
         if (tags.hasOwnProperty(key)) {
-            var value = tags[key];
-            tagPairs.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
+            const value = tags[key];
+            tagPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
         }
     }
     return tagPairs.join("&");
@@ -30436,15 +29361,15 @@ function toBlobTags(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var res = {
+    const res = {
         blobTagSet: []
     };
-    for (var key in tags) {
+    for (const key in tags) {
         if (tags.hasOwnProperty(key)) {
-            var value = tags[key];
+            const value = tags[key];
             res.blobTagSet.push({
-                key: key,
-                value: value
+                key,
+                value
             });
         }
     }
@@ -30459,9 +29384,8 @@ function toTags(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var res = {};
-    for (var _i = 0, _a = tags.blobTagSet; _i < _a.length; _i++) {
-        var blobTag = _a[_i];
+    const res = {};
+    for (const blobTag of tags.blobTagSet) {
         res[blobTag.key] = blobTag.value;
     }
     return res;
@@ -30520,18 +29444,18 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
         // the policy id should already be stored in the ObjectReplicationDestinationPolicyId.
         return undefined;
     }
-    var orProperties = [];
-    var _loop_1 = function (key) {
-        var ids = key.split("_");
-        var policyPrefix = "or-";
+    const orProperties = [];
+    for (const key in objectReplicationRecord) {
+        const ids = key.split("_");
+        const policyPrefix = "or-";
         if (ids[0].startsWith(policyPrefix)) {
             ids[0] = ids[0].substring(policyPrefix.length);
         }
-        var rule = {
+        const rule = {
             ruleId: ids[1],
             replicationStatus: objectReplicationRecord[key]
         };
-        var policyIndex = orProperties.findIndex(function (policy) { return policy.policyId === ids[0]; });
+        const policyIndex = orProperties.findIndex((policy) => policy.policyId === ids[0]);
         if (policyIndex > -1) {
             orProperties[policyIndex].rules.push(rule);
         }
@@ -30541,9 +29465,6 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
                 rules: [rule]
             });
         }
-    };
-    for (var key in objectReplicationRecord) {
-        _loop_1(key);
     }
     return orProperties;
 }
@@ -30570,51 +29491,42 @@ function attachCredential(thing, credential) {
  *
  * 3. Remove content-length header to avoid browsers warning
  */
-var StorageBrowserPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageBrowserPolicy, _super);
+class StorageBrowserPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of StorageBrowserPolicy.
      * @param nextPolicy -
      * @param options -
      */
-    function StorageBrowserPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends out request.
      *
      * @param request -
      */
-    StorageBrowserPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                {
-                    return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-                }
-            });
-        });
-    };
-    return StorageBrowserPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async sendRequest(request) {
+        {
+            return this._nextPolicy.sendRequest(request);
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * StorageBrowserPolicyFactory is a factory class helping generating StorageBrowserPolicy objects.
  */
-var StorageBrowserPolicyFactory = /** @class */ (function () {
-    function StorageBrowserPolicyFactory() {
-    }
+class StorageBrowserPolicyFactory {
     /**
      * Creates a StorageBrowserPolicyFactory object.
      *
      * @param nextPolicy -
      * @param options -
      */
-    StorageBrowserPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageBrowserPolicy(nextPolicy, options);
-    };
-    return StorageBrowserPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 (function (StorageRetryPolicyType) {
@@ -30628,7 +29540,7 @@ var StorageBrowserPolicyFactory = /** @class */ (function () {
     StorageRetryPolicyType[StorageRetryPolicyType["FIXED"] = 1] = "FIXED";
 })(exports.StorageRetryPolicyType || (exports.StorageRetryPolicyType = {}));
 // Default values of StorageRetryOptions
-var DEFAULT_RETRY_OPTIONS = {
+const DEFAULT_RETRY_OPTIONS = {
     maxRetryDelayInMs: 120 * 1000,
     maxTries: 4,
     retryDelayInMs: 4 * 1000,
@@ -30636,12 +29548,11 @@ var DEFAULT_RETRY_OPTIONS = {
     secondaryHost: "",
     tryTimeoutInMs: undefined // Use server side default timeout strategy
 };
-var RETRY_ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
+const RETRY_ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
 /**
  * Retry policy with exponential retry and linear retry implemented.
  */
-var StorageRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageRetryPolicy, _super);
+class StorageRetryPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of RetryPolicy.
      *
@@ -30649,11 +29560,10 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
      * @param options -
      * @param retryOptions -
      */
-    function StorageRetryPolicy(nextPolicy, options, retryOptions) {
-        if (retryOptions === void 0) { retryOptions = DEFAULT_RETRY_OPTIONS; }
-        var _this = _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options, retryOptions = DEFAULT_RETRY_OPTIONS) {
+        super(nextPolicy, options);
         // Initialize retry options
-        _this.retryOptions = {
+        this.retryOptions = {
             retryPolicyType: retryOptions.retryPolicyType
                 ? retryOptions.retryPolicyType
                 : DEFAULT_RETRY_OPTIONS.retryPolicyType,
@@ -30675,20 +29585,15 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
                 ? retryOptions.secondaryHost
                 : DEFAULT_RETRY_OPTIONS.secondaryHost
         };
-        return _this;
     }
     /**
      * Sends request.
      *
      * @param request -
      */
-    StorageRetryPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this.attemptSendRequest(request, false, 1)];
-            });
-        });
-    };
+    async sendRequest(request) {
+        return this.attemptSendRequest(request, false, 1);
+    }
     /**
      * Decide and perform next retry. Won't mutate request parameter.
      *
@@ -30699,52 +29604,37 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
      * @param attempt -           How many retries has been attempted to performed, starting from 1, which includes
      *                                   the attempt will be performed by this method call.
      */
-    StorageRetryPolicy.prototype.attemptSendRequest = function (request, secondaryHas404, attempt) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var newRequest, isPrimaryRetry, response, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        newRequest = request.clone();
-                        isPrimaryRetry = secondaryHas404 ||
-                            !this.retryOptions.secondaryHost ||
-                            !(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
-                            attempt % 2 === 1;
-                        if (!isPrimaryRetry) {
-                            newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);
-                        }
-                        // Set the server-side timeout query parameter "timeout=[seconds]"
-                        if (this.retryOptions.tryTimeoutInMs) {
-                            newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
-                        }
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        logger.info("RetryPolicy: =====> Try=" + attempt + " " + (isPrimaryRetry ? "Primary" : "Secondary"));
-                        return [4 /*yield*/, this._nextPolicy.sendRequest(newRequest)];
-                    case 2:
-                        response = _a.sent();
-                        if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
-                            return [2 /*return*/, response];
-                        }
-                        secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
-                        return [3 /*break*/, 4];
-                    case 3:
-                        err_1 = _a.sent();
-                        logger.error("RetryPolicy: Caught error, message: " + err_1.message + ", code: " + err_1.code);
-                        if (!this.shouldRetry(isPrimaryRetry, attempt, response, err_1)) {
-                            throw err_1;
-                        }
-                        return [3 /*break*/, 4];
-                    case 4: return [4 /*yield*/, this.delay(isPrimaryRetry, attempt, request.abortSignal)];
-                    case 5:
-                        _a.sent();
-                        return [4 /*yield*/, this.attemptSendRequest(request, secondaryHas404, ++attempt)];
-                    case 6: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
+    async attemptSendRequest(request, secondaryHas404, attempt) {
+        const newRequest = request.clone();
+        const isPrimaryRetry = secondaryHas404 ||
+            !this.retryOptions.secondaryHost ||
+            !(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
+            attempt % 2 === 1;
+        if (!isPrimaryRetry) {
+            newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);
+        }
+        // Set the server-side timeout query parameter "timeout=[seconds]"
+        if (this.retryOptions.tryTimeoutInMs) {
+            newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
+        }
+        let response;
+        try {
+            logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? "Primary" : "Secondary"}`);
+            response = await this._nextPolicy.sendRequest(newRequest);
+            if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
+                return response;
+            }
+            secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
+        }
+        catch (err) {
+            logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);
+            if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {
+                throw err;
+            }
+        }
+        await this.delay(isPrimaryRetry, attempt, request.abortSignal);
+        return await this.attemptSendRequest(request, secondaryHas404, ++attempt);
+    }
     /**
      * Decide whether to retry according to last HTTP response and retry counters.
      *
@@ -30753,15 +29643,15 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
      * @param response -
      * @param err -
      */
-    StorageRetryPolicy.prototype.shouldRetry = function (isPrimaryRetry, attempt, response, err) {
+    shouldRetry(isPrimaryRetry, attempt, response, err) {
         if (attempt >= this.retryOptions.maxTries) {
-            logger.info("RetryPolicy: Attempt(s) " + attempt + " >= maxTries " + this.retryOptions
-                .maxTries + ", no further try.");
+            logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions
+                .maxTries}, no further try.`);
             return false;
         }
         // Handle network failures, you may need to customize the list when you implement
         // your own http client
-        var retriableErrors = [
+        const retriableErrors = [
             "ETIMEDOUT",
             "ESOCKETTIMEDOUT",
             "ECONNREFUSED",
@@ -30773,12 +29663,11 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
             "REQUEST_SEND_ERROR" // For default xhr based http client provided in ms-rest-js
         ];
         if (err) {
-            for (var _i = 0, retriableErrors_1 = retriableErrors; _i < retriableErrors_1.length; _i++) {
-                var retriableError = retriableErrors_1[_i];
+            for (const retriableError of retriableErrors) {
                 if (err.name.toUpperCase().includes(retriableError) ||
                     err.message.toUpperCase().includes(retriableError) ||
                     (err.code && err.code.toString().toUpperCase() === retriableError)) {
-                    logger.info("RetryPolicy: Network error " + retriableError + " found, will retry.");
+                    logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);
                     return true;
                 }
             }
@@ -30787,23 +29676,23 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
         // the resource was not found. This may be due to replication delay. So, in this
         // case, we'll never try the secondary again for this operation.
         if (response || err) {
-            var statusCode = response ? response.status : err ? err.statusCode : 0;
+            const statusCode = response ? response.status : err ? err.statusCode : 0;
             if (!isPrimaryRetry && statusCode === 404) {
-                logger.info("RetryPolicy: Secondary access with 404, will retry.");
+                logger.info(`RetryPolicy: Secondary access with 404, will retry.`);
                 return true;
             }
             // Server internal error or server timeout
             if (statusCode === 503 || statusCode === 500) {
-                logger.info("RetryPolicy: Will retry for status code " + statusCode + ".");
+                logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);
                 return true;
             }
         }
-        if ((err === null || err === void 0 ? void 0 : err.code) === "PARSE_ERROR" && (err === null || err === void 0 ? void 0 : err.message.startsWith("Error \"Error: Unclosed root tag"))) {
+        if ((err === null || err === void 0 ? void 0 : err.code) === "PARSE_ERROR" && (err === null || err === void 0 ? void 0 : err.message.startsWith(`Error "Error: Unclosed root tag`))) {
             logger.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");
             return true;
         }
         return false;
-    };
+    }
     /**
      * Delay a calculated time between retries.
      *
@@ -30811,42 +29700,36 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
      * @param attempt -
      * @param abortSignal -
      */
-    StorageRetryPolicy.prototype.delay = function (isPrimaryRetry, attempt, abortSignal) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var delayTimeInMs;
-            return tslib.__generator(this, function (_a) {
-                delayTimeInMs = 0;
-                if (isPrimaryRetry) {
-                    switch (this.retryOptions.retryPolicyType) {
-                        case exports.StorageRetryPolicyType.EXPONENTIAL:
-                            delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
-                            break;
-                        case exports.StorageRetryPolicyType.FIXED:
-                            delayTimeInMs = this.retryOptions.retryDelayInMs;
-                            break;
-                    }
-                }
-                else {
-                    delayTimeInMs = Math.random() * 1000;
-                }
-                logger.info("RetryPolicy: Delay for " + delayTimeInMs + "ms");
-                return [2 /*return*/, delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR)];
-            });
-        });
-    };
-    return StorageRetryPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async delay(isPrimaryRetry, attempt, abortSignal) {
+        let delayTimeInMs = 0;
+        if (isPrimaryRetry) {
+            switch (this.retryOptions.retryPolicyType) {
+                case exports.StorageRetryPolicyType.EXPONENTIAL:
+                    delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
+                    break;
+                case exports.StorageRetryPolicyType.FIXED:
+                    delayTimeInMs = this.retryOptions.retryDelayInMs;
+                    break;
+            }
+        }
+        else {
+            delayTimeInMs = Math.random() * 1000;
+        }
+        logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);
+        return delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * StorageRetryPolicyFactory is a factory class helping generating {@link StorageRetryPolicy} objects.
  */
-var StorageRetryPolicyFactory = /** @class */ (function () {
+class StorageRetryPolicyFactory {
     /**
      * Creates an instance of StorageRetryPolicyFactory.
      * @param retryOptions -
      */
-    function StorageRetryPolicyFactory(retryOptions) {
+    constructor(retryOptions) {
         this.retryOptions = retryOptions;
     }
     /**
@@ -30855,61 +29738,53 @@ var StorageRetryPolicyFactory = /** @class */ (function () {
      * @param nextPolicy -
      * @param options -
      */
-    StorageRetryPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageRetryPolicy(nextPolicy, options, this.retryOptions);
-    };
-    return StorageRetryPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Credential policy used to sign HTTP(S) requests before sending. This is an
  * abstract class.
  */
-var CredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(CredentialPolicy, _super);
-    function CredentialPolicy() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
+class CredentialPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Sends out request.
      *
      * @param request -
      */
-    CredentialPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         return this._nextPolicy.sendRequest(this.signRequest(request));
-    };
+    }
     /**
      * Child classes must implement this method with request signing. This method
      * will be executed in {@link sendRequest}.
      *
      * @param request -
      */
-    CredentialPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         // Child classes must override this method with request signing. This method
         // will be executed in sendRequest().
         return request;
-    };
-    return CredentialPolicy;
-}(coreHttp.BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources
  * or for use with Shared Access Signatures (SAS).
  */
-var AnonymousCredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(AnonymousCredentialPolicy, _super);
+class AnonymousCredentialPolicy extends CredentialPolicy {
     /**
      * Creates an instance of AnonymousCredentialPolicy.
      * @param nextPolicy -
      * @param options -
      */
-    function AnonymousCredentialPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
-    return AnonymousCredentialPolicy;
-}(CredentialPolicy));
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -30917,24 +29792,21 @@ var AnonymousCredentialPolicy = /** @class */ (function (_super) {
  * Credential is an abstract class for Azure Storage HTTP requests signing. This
  * class will host an credentialPolicyCreator factory which generates CredentialPolicy.
  */
-var Credential = /** @class */ (function () {
-    function Credential() {
-    }
+class Credential {
     /**
      * Creates a RequestPolicy object.
      *
      * @param _nextPolicy -
      * @param _options -
      */
-    Credential.prototype.create = function (
+    create(
     // tslint:disable-next-line:variable-name
     _nextPolicy, 
     // tslint:disable-next-line:variable-name
     _options) {
         throw new Error("Method should be implemented in children classes.");
-    };
-    return Credential;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -30943,88 +29815,76 @@ var Credential = /** @class */ (function () {
  * HTTP(S) requests that read public resources or for use with Shared Access
  * Signatures (SAS).
  */
-var AnonymousCredential = /** @class */ (function (_super) {
-    tslib.__extends(AnonymousCredential, _super);
-    function AnonymousCredential() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
+class AnonymousCredential extends Credential {
     /**
      * Creates an {@link AnonymousCredentialPolicy} object.
      *
      * @param nextPolicy -
      * @param options -
      */
-    AnonymousCredential.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new AnonymousCredentialPolicy(nextPolicy, options);
-    };
-    return AnonymousCredential;
-}(Credential));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * TelemetryPolicy is a policy used to tag user-agent header for every requests.
  */
-var TelemetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(TelemetryPolicy, _super);
+class TelemetryPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of TelemetryPolicy.
      * @param nextPolicy -
      * @param options -
      * @param telemetry -
      */
-    function TelemetryPolicy(nextPolicy, options, telemetry) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.telemetry = telemetry;
-        return _this;
+    constructor(nextPolicy, options, telemetry) {
+        super(nextPolicy, options);
+        this.telemetry = telemetry;
     }
     /**
      * Sends out request.
      *
      * @param request -
      */
-    TelemetryPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                {
-                    if (!request.headers) {
-                        request.headers = new coreHttp.HttpHeaders();
-                    }
-                    if (!request.headers.get(HeaderConstants.USER_AGENT)) {
-                        request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);
-                    }
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return TelemetryPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async sendRequest(request) {
+        {
+            if (!request.headers) {
+                request.headers = new coreHttp.HttpHeaders();
+            }
+            if (!request.headers.get(HeaderConstants.USER_AGENT)) {
+                request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);
+            }
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * TelemetryPolicyFactory is a factory class helping generating {@link TelemetryPolicy} objects.
  */
-var TelemetryPolicyFactory = /** @class */ (function () {
+class TelemetryPolicyFactory {
     /**
      * Creates an instance of TelemetryPolicyFactory.
      * @param telemetry -
      */
-    function TelemetryPolicyFactory(telemetry) {
-        var userAgentInfo = [];
+    constructor(telemetry) {
+        const userAgentInfo = [];
         {
             if (telemetry) {
-                var telemetryString = telemetry.userAgentPrefix || "";
+                const telemetryString = telemetry.userAgentPrefix || "";
                 if (telemetryString.length > 0 && userAgentInfo.indexOf(telemetryString) === -1) {
                     userAgentInfo.push(telemetryString);
                 }
             }
             // e.g. azsdk-js-storageblob/10.0.0
-            var libInfo = "azsdk-js-storageblob/" + SDK_VERSION;
+            const libInfo = `azsdk-js-storageblob/${SDK_VERSION}`;
             if (userAgentInfo.indexOf(libInfo) === -1) {
                 userAgentInfo.push(libInfo);
             }
             // e.g. (NODE-VERSION 4.9.1; Windows_NT 10.0.16299)
-            var runtimeInfo = "(NODE-VERSION " + process.version + "; " + os.type() + " " + os.release() + ")";
+            const runtimeInfo = `(NODE-VERSION ${process.version}; ${os.type()} ${os.release()})`;
             if (userAgentInfo.indexOf(runtimeInfo) === -1) {
                 userAgentInfo.push(runtimeInfo);
             }
@@ -31037,14 +29897,13 @@ var TelemetryPolicyFactory = /** @class */ (function () {
      * @param nextPolicy -
      * @param options -
      */
-    TelemetryPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new TelemetryPolicy(nextPolicy, options, this.telemetryString);
-    };
-    return TelemetryPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var _defaultHttpClient = new coreHttp.DefaultHttpClient();
+const _defaultHttpClient = new coreHttp.DefaultHttpClient();
 function getCachedDefaultHttpClient() {
     return _defaultHttpClient;
 }
@@ -31058,19 +29917,18 @@ function getCachedDefaultHttpClient() {
  * Refer to {@link newPipeline} and provided policies before implementing your
  * customized Pipeline.
  */
-var Pipeline = /** @class */ (function () {
+class Pipeline {
     /**
      * Creates an instance of Pipeline. Customize HTTPClient by implementing IHttpClient interface.
      *
      * @param factories -
      * @param options -
      */
-    function Pipeline(factories, options) {
-        if (options === void 0) { options = {}; }
+    constructor(factories, options = {}) {
         this.factories = factories;
         // when options.httpClient is not specified, passing in a DefaultHttpClient instance to
         // avoid each client creating its own http client.
-        this.options = tslib.__assign(tslib.__assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });
+        this.options = Object.assign(Object.assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });
     }
     /**
      * Transfer Pipeline object to ServiceClientOptions object which is required by
@@ -31078,14 +29936,13 @@ var Pipeline = /** @class */ (function () {
      *
      * @returns The ServiceClientOptions object from this Pipeline.
      */
-    Pipeline.prototype.toServiceClientOptions = function () {
+    toServiceClientOptions() {
         return {
             httpClient: this.options.httpClient,
             requestPolicyFactories: this.factories
         };
-    };
-    return Pipeline;
-}());
+    }
+}
 /**
  * Creates a new Pipeline object with Credential provided.
  *
@@ -31093,16 +29950,15 @@ var Pipeline = /** @class */ (function () {
  * @param pipelineOptions - Optional. Options.
  * @returns A new Pipeline object.
  */
-function newPipeline(credential, pipelineOptions) {
-    if (pipelineOptions === void 0) { pipelineOptions = {}; }
+function newPipeline(credential, pipelineOptions = {}) {
     if (credential === undefined) {
         credential = new AnonymousCredential();
     }
     // Order is important. Closer to the API at the top & closer to the network at the bottom.
     // The credential's policy factory must appear close to the wire so it can sign any
     // changes made by other factories (like UniqueRequestIDPolicyFactory)
-    var telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);
-    var factories = [
+    const telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);
+    const factories = [
         coreHttp.tracingPolicy({ userAgent: telemetryPolicy.telemetryString }),
         coreHttp.keepAlivePolicy(pipelineOptions.keepAliveOptions),
         telemetryPolicy,
@@ -31134,30 +29990,28 @@ function newPipeline(credential, pipelineOptions) {
 /**
  * StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
  */
-var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageSharedKeyCredentialPolicy, _super);
+class StorageSharedKeyCredentialPolicy extends CredentialPolicy {
     /**
      * Creates an instance of StorageSharedKeyCredentialPolicy.
      * @param nextPolicy -
      * @param options -
      * @param factory -
      */
-    function StorageSharedKeyCredentialPolicy(nextPolicy, options, factory) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.factory = factory;
-        return _this;
+    constructor(nextPolicy, options, factory) {
+        super(nextPolicy, options);
+        this.factory = factory;
     }
     /**
      * Signs request.
      *
      * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());
         if (request.body && typeof request.body === "string" && request.body.length > 0) {
             request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));
         }
-        var stringToSign = [
+        const stringToSign = [
             request.method.toUpperCase(),
             this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),
             this.getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),
@@ -31174,14 +30028,14 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
             "\n" +
             this.getCanonicalizedHeadersString(request) +
             this.getCanonicalizedResourceString(request);
-        var signature = this.factory.computeHMACSHA256(stringToSign);
-        request.headers.set(HeaderConstants.AUTHORIZATION, "SharedKey " + this.factory.accountName + ":" + signature);
+        const signature = this.factory.computeHMACSHA256(stringToSign);
+        request.headers.set(HeaderConstants.AUTHORIZATION, `SharedKey ${this.factory.accountName}:${signature}`);
         // console.log(`[URL]:${request.url}`);
         // console.log(`[HEADERS]:${request.headers.toString()}`);
         // console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);
         // console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);
         return request;
-    };
+    }
     /**
      * Retrieve header value according to shared key sign rules.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
@@ -31189,8 +30043,8 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
      * @param request -
      * @param headerName -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getHeaderValueToSign = function (request, headerName) {
-        var value = request.headers.get(headerName);
+    getHeaderValueToSign(request, headerName) {
+        const value = request.headers.get(headerName);
         if (!value) {
             return "";
         }
@@ -31201,7 +30055,7 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
             return "";
         }
         return value;
-    };
+    }
     /**
      * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
      * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
@@ -31215,58 +30069,56 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
      *
      * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedHeadersString = function (request) {
-        var headersArray = request.headers.headersArray().filter(function (value) {
+    getCanonicalizedHeadersString(request) {
+        let headersArray = request.headers.headersArray().filter((value) => {
             return value.name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE);
         });
-        headersArray.sort(function (a, b) {
+        headersArray.sort((a, b) => {
             return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
         });
         // Remove duplicate headers
-        headersArray = headersArray.filter(function (value, index, array) {
+        headersArray = headersArray.filter((value, index, array) => {
             if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {
                 return false;
             }
             return true;
         });
-        var canonicalizedHeadersStringToSign = "";
-        headersArray.forEach(function (header) {
-            canonicalizedHeadersStringToSign += header.name
+        let canonicalizedHeadersStringToSign = "";
+        headersArray.forEach((header) => {
+            canonicalizedHeadersStringToSign += `${header.name
                 .toLowerCase()
-                .trimRight() + ":" + header.value.trimLeft() + "\n";
+                .trimRight()}:${header.value.trimLeft()}\n`;
         });
         return canonicalizedHeadersStringToSign;
-    };
+    }
     /**
      * Retrieves the webResource canonicalized resource string.
      *
      * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedResourceString = function (request) {
-        var path = getURLPath(request.url) || "/";
-        var canonicalizedResourceString = "";
-        canonicalizedResourceString += "/" + this.factory.accountName + path;
-        var queries = getURLQueries(request.url);
-        var lowercaseQueries = {};
+    getCanonicalizedResourceString(request) {
+        const path = getURLPath(request.url) || "/";
+        let canonicalizedResourceString = "";
+        canonicalizedResourceString += `/${this.factory.accountName}${path}`;
+        const queries = getURLQueries(request.url);
+        const lowercaseQueries = {};
         if (queries) {
-            var queryKeys = [];
-            for (var key in queries) {
+            const queryKeys = [];
+            for (const key in queries) {
                 if (queries.hasOwnProperty(key)) {
-                    var lowercaseKey = key.toLowerCase();
+                    const lowercaseKey = key.toLowerCase();
                     lowercaseQueries[lowercaseKey] = queries[key];
                     queryKeys.push(lowercaseKey);
                 }
             }
             queryKeys.sort();
-            for (var _i = 0, queryKeys_1 = queryKeys; _i < queryKeys_1.length; _i++) {
-                var key = queryKeys_1[_i];
-                canonicalizedResourceString += "\n" + key + ":" + decodeURIComponent(lowercaseQueries[key]);
+            for (const key of queryKeys) {
+                canonicalizedResourceString += `\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;
             }
         }
         return canonicalizedResourceString;
-    };
-    return StorageSharedKeyCredentialPolicy;
-}(CredentialPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -31274,18 +30126,16 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
  *
  * StorageSharedKeyCredential for account key authorization of Azure Storage service.
  */
-var StorageSharedKeyCredential = /** @class */ (function (_super) {
-    tslib.__extends(StorageSharedKeyCredential, _super);
+class StorageSharedKeyCredential extends Credential {
     /**
      * Creates an instance of StorageSharedKeyCredential.
      * @param accountName -
      * @param accountKey -
      */
-    function StorageSharedKeyCredential(accountName, accountKey) {
-        var _this = _super.call(this) || this;
-        _this.accountName = accountName;
-        _this.accountKey = Buffer.from(accountKey, "base64");
-        return _this;
+    constructor(accountName, accountKey) {
+        super();
+        this.accountName = accountName;
+        this.accountKey = Buffer.from(accountKey, "base64");
     }
     /**
      * Creates a StorageSharedKeyCredentialPolicy object.
@@ -31293,21 +30143,20 @@ var StorageSharedKeyCredential = /** @class */ (function (_super) {
      * @param nextPolicy -
      * @param options -
      */
-    StorageSharedKeyCredential.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageSharedKeyCredentialPolicy(nextPolicy, options, this);
-    };
+    }
     /**
      * Generates a hash signature for an HTTP request or for a SAS.
      *
      * @param stringToSign -
      */
-    StorageSharedKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
+    computeHMACSHA256(stringToSign) {
         return crypto.createHmac("sha256", this.accountKey)
             .update(stringToSign, "utf8")
             .digest("base64");
-    };
-    return StorageSharedKeyCredential;
-}(Credential));
+    }
+}
 
 /*
  * Copyright (c) Microsoft Corporation.
@@ -31316,18 +30165,16 @@ var StorageSharedKeyCredential = /** @class */ (function (_super) {
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var packageName = "azure-storage-blob";
-var packageVersion = "12.6.0-beta.1";
-var StorageClientContext = /** @class */ (function (_super) {
-    tslib.__extends(StorageClientContext, _super);
+const packageName = "azure-storage-blob";
+const packageVersion = "12.6.0-beta.1";
+class StorageClientContext extends coreHttp.ServiceClient {
     /**
      * Initializes a new instance of the StorageClientContext class.
      * @param url The URL of the service account, container, or blob that is the targe of the desired
      *            operation.
      * @param options The parameter options
      */
-    function StorageClientContext(url, options) {
-        var _this = this;
+    constructor(url, options) {
         if (url === undefined) {
             throw new Error("'url' cannot be null");
         }
@@ -31336,33 +30183,31 @@ var StorageClientContext = /** @class */ (function (_super) {
             options = {};
         }
         if (!options.userAgent) {
-            var defaultUserAgent = coreHttp.getDefaultUserAgentValue();
-            options.userAgent = packageName + "/" + packageVersion + " " + defaultUserAgent;
+            const defaultUserAgent = coreHttp.getDefaultUserAgentValue();
+            options.userAgent = `${packageName}/${packageVersion} ${defaultUserAgent}`;
         }
-        _this = _super.call(this, undefined, options) || this;
-        _this.requestContentType = "application/json; charset=utf-8";
-        _this.baseUri = options.endpoint || "{url}";
+        super(undefined, options);
+        this.requestContentType = "application/json; charset=utf-8";
+        this.baseUri = options.endpoint || "{url}";
         // Parameter assignments
-        _this.url = url;
+        this.url = url;
         // Assigning values to Constant parameters
-        _this.version = options.version || "2020-08-04";
-        return _this;
+        this.version = options.version || "2020-08-04";
     }
-    return StorageClientContext;
-}(coreHttp.ServiceClient));
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}
  * and etc.
  */
-var StorageClient = /** @class */ (function () {
+class StorageClient {
     /**
      * Creates an instance of StorageClient.
      * @param url - url to resource
      * @param pipeline - request policy pipeline.
      */
-    function StorageClient(url, pipeline) {
+    constructor(url, pipeline) {
         // URL should be encoded and only once, protocol layer shouldn't encode URL again
         this.url = escapeURLPath(url);
         this.accountName = getAccountNameFromUrl(url);
@@ -31370,8 +30215,7 @@ var StorageClient = /** @class */ (function () {
         this.storageClientContext = new StorageClientContext(this.url, pipeline.toServiceClientOptions());
         this.isHttps = iEqual(getURLScheme(this.url) || "", "https");
         this.credential = new AnonymousCredential();
-        for (var _i = 0, _a = this.pipeline.factories; _i < _a.length; _i++) {
-            var factory = _a[_i];
+        for (const factory of this.pipeline.factories) {
             if ((coreHttp.isNode && factory instanceof StorageSharedKeyCredential) ||
                 factory instanceof AnonymousCredential) {
                 this.credential = factory;
@@ -31383,18 +30227,17 @@ var StorageClient = /** @class */ (function () {
             }
         }
         // Override protocol layer's default content-type
-        var storageClientContext = this.storageClientContext;
+        const storageClientContext = this.storageClientContext;
         storageClientContext.requestContentType = undefined;
     }
-    return StorageClient;
-}());
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Creates a span using the global tracer.
  * @internal
  */
-var createSpan = coreTracing.createSpanFunction({
+const createSpan = coreTracing.createSpanFunction({
     packagePrefix: "Azure.Storage.Blob",
     namespace: "Microsoft.Storage"
 });
@@ -31424,8 +30267,8 @@ function convertTracingToRequestOptionsBase(options) {
  * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
  * the order of the permissions is particular and this class guarantees correctness.
  */
-var BlobSASPermissions = /** @class */ (function () {
-    function BlobSASPermissions() {
+class BlobSASPermissions {
+    constructor() {
         /**
          * Specifies Read access granted.
          */
@@ -31469,10 +30312,9 @@ var BlobSASPermissions = /** @class */ (function () {
      *
      * @param permissions -
      */
-    BlobSASPermissions.parse = function (permissions) {
-        var blobSASPermissions = new BlobSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var char = permissions_1[_i];
+    static parse(permissions) {
+        const blobSASPermissions = new BlobSASPermissions();
+        for (const char of permissions) {
             switch (char) {
                 case "r":
                     blobSASPermissions.read = true;
@@ -31502,19 +30344,19 @@ var BlobSASPermissions = /** @class */ (function () {
                     blobSASPermissions.execute = true;
                     break;
                 default:
-                    throw new RangeError("Invalid permission: " + char);
+                    throw new RangeError(`Invalid permission: ${char}`);
             }
         }
         return blobSASPermissions;
-    };
+    }
     /**
      * Creates a {@link BlobSASPermissions} from a raw object which contains same keys as it
      * and boolean values for them.
      *
      * @param permissionLike -
      */
-    BlobSASPermissions.from = function (permissionLike) {
-        var blobSASPermissions = new BlobSASPermissions();
+    static from(permissionLike) {
+        const blobSASPermissions = new BlobSASPermissions();
         if (permissionLike.read) {
             blobSASPermissions.read = true;
         }
@@ -31543,15 +30385,15 @@ var BlobSASPermissions = /** @class */ (function () {
             blobSASPermissions.execute = true;
         }
         return blobSASPermissions;
-    };
+    }
     /**
      * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
      * order accepted by the service.
      *
      * @returns A string which represents the BlobSASPermissions
      */
-    BlobSASPermissions.prototype.toString = function () {
-        var permissions = [];
+    toString() {
+        const permissions = [];
         if (this.read) {
             permissions.push("r");
         }
@@ -31580,9 +30422,8 @@ var BlobSASPermissions = /** @class */ (function () {
             permissions.push("e");
         }
         return permissions.join("");
-    };
-    return BlobSASPermissions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -31593,8 +30434,8 @@ var BlobSASPermissions = /** @class */ (function () {
  * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
  * the order of the permissions is particular and this class guarantees correctness.
  */
-var ContainerSASPermissions = /** @class */ (function () {
-    function ContainerSASPermissions() {
+class ContainerSASPermissions {
+    constructor() {
         /**
          * Specifies Read access granted.
          */
@@ -31642,10 +30483,9 @@ var ContainerSASPermissions = /** @class */ (function () {
      *
      * @param permissions -
      */
-    ContainerSASPermissions.parse = function (permissions) {
-        var containerSASPermissions = new ContainerSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var char = permissions_1[_i];
+    static parse(permissions) {
+        const containerSASPermissions = new ContainerSASPermissions();
+        for (const char of permissions) {
             switch (char) {
                 case "r":
                     containerSASPermissions.read = true;
@@ -31678,19 +30518,19 @@ var ContainerSASPermissions = /** @class */ (function () {
                     containerSASPermissions.execute = true;
                     break;
                 default:
-                    throw new RangeError("Invalid permission " + char);
+                    throw new RangeError(`Invalid permission ${char}`);
             }
         }
         return containerSASPermissions;
-    };
+    }
     /**
      * Creates a {@link ContainerSASPermissions} from a raw object which contains same keys as it
      * and boolean values for them.
      *
      * @param permissionLike -
      */
-    ContainerSASPermissions.from = function (permissionLike) {
-        var containerSASPermissions = new ContainerSASPermissions();
+    static from(permissionLike) {
+        const containerSASPermissions = new ContainerSASPermissions();
         if (permissionLike.read) {
             containerSASPermissions.read = true;
         }
@@ -31722,7 +30562,7 @@ var ContainerSASPermissions = /** @class */ (function () {
             containerSASPermissions.execute = true;
         }
         return containerSASPermissions;
-    };
+    }
     /**
      * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
      * order accepted by the service.
@@ -31731,8 +30571,8 @@ var ContainerSASPermissions = /** @class */ (function () {
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
      *
      */
-    ContainerSASPermissions.prototype.toString = function () {
-        var permissions = [];
+    toString() {
+        const permissions = [];
         if (this.read) {
             permissions.push("r");
         }
@@ -31764,9 +30604,8 @@ var ContainerSASPermissions = /** @class */ (function () {
             permissions.push("e");
         }
         return permissions.join("");
-    };
-    return ContainerSASPermissions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -31775,13 +30614,13 @@ var ContainerSASPermissions = /** @class */ (function () {
  * UserDelegationKeyCredential is only used for generation of user delegation SAS.
  * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas
  */
-var UserDelegationKeyCredential = /** @class */ (function () {
+class UserDelegationKeyCredential {
     /**
      * Creates an instance of UserDelegationKeyCredential.
      * @param accountName -
      * @param userDelegationKey -
      */
-    function UserDelegationKeyCredential(accountName, userDelegationKey) {
+    constructor(accountName, userDelegationKey) {
         this.accountName = accountName;
         this.userDelegationKey = userDelegationKey;
         this.key = Buffer.from(userDelegationKey.value, "base64");
@@ -31791,14 +30630,13 @@ var UserDelegationKeyCredential = /** @class */ (function () {
      *
      * @param stringToSign -
      */
-    UserDelegationKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
+    computeHMACSHA256(stringToSign) {
         // console.log(`stringToSign: ${JSON.stringify(stringToSign)}`);
         return crypto.createHmac("sha256", this.key)
             .update(stringToSign, "utf8")
             .digest("base64");
-    };
-    return UserDelegationKeyCredential;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -31810,7 +30648,7 @@ var UserDelegationKeyCredential = /** @class */ (function () {
  * @param ipRange -
  */
 function ipRangeToString(ipRange) {
-    return ipRange.end ? ipRange.start + "-" + ipRange.end : ipRange.start;
+    return ipRange.end ? `${ipRange.start}-${ipRange.end}` : ipRange.start;
 }
 
 // Copyright (c) Microsoft Corporation.
@@ -31833,8 +30671,8 @@ function ipRangeToString(ipRange) {
  *
  * NOTE: Instances of this class are immutable.
  */
-var SASQueryParameters = /** @class */ (function () {
-    function SASQueryParameters(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId) {
+class SASQueryParameters {
+    constructor(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId) {
         this.version = version;
         this.signature = signature;
         if (permissionsOrOptions !== undefined && typeof permissionsOrOptions !== "string") {
@@ -31891,30 +30729,26 @@ var SASQueryParameters = /** @class */ (function () {
             }
         }
     }
-    Object.defineProperty(SASQueryParameters.prototype, "ipRange", {
-        /**
-         * Optional. IP range allowed for this SAS.
-         *
-         * @readonly
-         */
-        get: function () {
-            if (this.ipRangeInner) {
-                return {
-                    end: this.ipRangeInner.end,
-                    start: this.ipRangeInner.start
-                };
-            }
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * Optional. IP range allowed for this SAS.
+     *
+     * @readonly
+     */
+    get ipRange() {
+        if (this.ipRangeInner) {
+            return {
+                end: this.ipRangeInner.end,
+                start: this.ipRangeInner.start
+            };
+        }
+        return undefined;
+    }
     /**
      * Encodes all SAS query parameters into a string that can be appended to a URL.
      *
      */
-    SASQueryParameters.prototype.toString = function () {
-        var params = [
+    toString() {
+        const params = [
             "sv",
             "ss",
             "srt",
@@ -31940,9 +30774,8 @@ var SASQueryParameters = /** @class */ (function () {
             "saoid",
             "scid"
         ];
-        var queries = [];
-        for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {
-            var param = params_1[_i];
+        const queries = [];
+        for (const param of params) {
             switch (param) {
                 case "sv":
                     this.tryAppendQueryParameter(queries, param, this.version);
@@ -32019,7 +30852,7 @@ var SASQueryParameters = /** @class */ (function () {
             }
         }
         return queries.join("&");
-    };
+    }
     /**
      * A private helper method used to filter and append query key/value pairs into an array.
      *
@@ -32027,26 +30860,25 @@ var SASQueryParameters = /** @class */ (function () {
      * @param key -
      * @param value -
      */
-    SASQueryParameters.prototype.tryAppendQueryParameter = function (queries, key, value) {
+    tryAppendQueryParameter(queries, key, value) {
         if (!value) {
             return;
         }
         key = encodeURIComponent(key);
         value = encodeURIComponent(value);
         if (key.length > 0 && value.length > 0) {
-            queries.push(key + "=" + value);
+            queries.push(`${key}=${value}`);
         }
-    };
-    return SASQueryParameters;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    var sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
+    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
+    const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
         ? sharedKeyCredentialOrUserDelegationKey
         : undefined;
-    var userDelegationKeyCredential;
+    let userDelegationKeyCredential;
     if (sharedKeyCredential === undefined && accountName !== undefined) {
         userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);
     }
@@ -32102,12 +30934,12 @@ function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKe
         !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
         throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
     }
-    var resource = "c";
+    let resource = "c";
     if (blobSASSignatureValues.blobName) {
         resource = "b";
     }
     // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    var verifiedPermissions;
+    let verifiedPermissions;
     if (blobSASSignatureValues.permissions) {
         if (blobSASSignatureValues.blobName) {
             verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
@@ -32117,7 +30949,7 @@ function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKe
         }
     }
     // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
+    const stringToSign = [
         verifiedPermissions ? verifiedPermissions : "",
         blobSASSignatureValues.startsOn
             ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
@@ -32136,7 +30968,7 @@ function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKe
         blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
         blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
     ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
 }
 /**
@@ -32161,8 +30993,8 @@ function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKe
         !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
         throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
     }
-    var resource = "c";
-    var timestamp = blobSASSignatureValues.snapshotTime;
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
     if (blobSASSignatureValues.blobName) {
         resource = "b";
         if (blobSASSignatureValues.snapshotTime) {
@@ -32174,7 +31006,7 @@ function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKe
         }
     }
     // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    var verifiedPermissions;
+    let verifiedPermissions;
     if (blobSASSignatureValues.permissions) {
         if (blobSASSignatureValues.blobName) {
             verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
@@ -32184,7 +31016,7 @@ function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKe
         }
     }
     // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
+    const stringToSign = [
         verifiedPermissions ? verifiedPermissions : "",
         blobSASSignatureValues.startsOn
             ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
@@ -32205,7 +31037,7 @@ function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKe
         blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
         blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
     ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
 }
 /**
@@ -32228,8 +31060,8 @@ function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userD
     if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
         throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
     }
-    var resource = "c";
-    var timestamp = blobSASSignatureValues.snapshotTime;
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
     if (blobSASSignatureValues.blobName) {
         resource = "b";
         if (blobSASSignatureValues.snapshotTime) {
@@ -32241,7 +31073,7 @@ function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userD
         }
     }
     // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    var verifiedPermissions;
+    let verifiedPermissions;
     if (blobSASSignatureValues.permissions) {
         if (blobSASSignatureValues.blobName) {
             verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
@@ -32251,7 +31083,7 @@ function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userD
         }
     }
     // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
+    const stringToSign = [
         verifiedPermissions ? verifiedPermissions : "",
         blobSASSignatureValues.startsOn
             ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
@@ -32281,7 +31113,7 @@ function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userD
         blobSASSignatureValues.contentLanguage,
         blobSASSignatureValues.contentType
     ].join("\n");
-    var signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey);
 }
 /**
@@ -32304,8 +31136,8 @@ function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userD
     if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
         throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
     }
-    var resource = "c";
-    var timestamp = blobSASSignatureValues.snapshotTime;
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
     if (blobSASSignatureValues.blobName) {
         resource = "b";
         if (blobSASSignatureValues.snapshotTime) {
@@ -32317,7 +31149,7 @@ function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userD
         }
     }
     // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    var verifiedPermissions;
+    let verifiedPermissions;
     if (blobSASSignatureValues.permissions) {
         if (blobSASSignatureValues.blobName) {
             verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
@@ -32327,7 +31159,7 @@ function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userD
         }
     }
     // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
+    const stringToSign = [
         verifiedPermissions ? verifiedPermissions : "",
         blobSASSignatureValues.startsOn
             ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
@@ -32360,20 +31192,20 @@ function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userD
         blobSASSignatureValues.contentLanguage,
         blobSASSignatureValues.contentType
     ].join("\n");
-    var signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId);
 }
 function getCanonicalName(accountName, containerName, blobName) {
     // Container: "/blob/account/containerName"
     // Blob:      "/blob/account/containerName/blobName"
-    var elements = ["/blob/" + accountName + "/" + containerName];
+    const elements = [`/blob/${accountName}/${containerName}`];
     if (blobName) {
-        elements.push("/" + blobName);
+        elements.push(`/${blobName}`);
     }
     return elements.join("");
 }
 function SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
+    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
     if (blobSASSignatureValues.snapshotTime && version < "2018-11-09") {
         throw RangeError("'version' must be >= '2018-11-09' when providing 'snapshotTime'.");
     }
@@ -32409,17 +31241,18 @@ function SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {
     return blobSASSignatureValues;
 }
 
+// Copyright (c) Microsoft Corporation.
 /**
  * A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.
  */
-var BlobLeaseClient = /** @class */ (function () {
+class BlobLeaseClient {
     /**
      * Creates an instance of BlobLeaseClient.
      * @param client - The client to make the lease operation requests.
      * @param leaseId - Initial proposed lease id.
      */
-    function BlobLeaseClient(client, leaseId) {
-        var clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());
+    constructor(client, leaseId) {
+        const clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());
         this._url = client.url;
         if (client.name === undefined) {
             this._isContainer = true;
@@ -32434,30 +31267,22 @@ var BlobLeaseClient = /** @class */ (function () {
         }
         this._leaseId = leaseId;
     }
-    Object.defineProperty(BlobLeaseClient.prototype, "leaseId", {
-        /**
-         * Gets the lease Id.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this._leaseId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobLeaseClient.prototype, "url", {
-        /**
-         * Gets the url.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this._url;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * Gets the lease Id.
+     *
+     * @readonly
+     */
+    get leaseId() {
+        return this._leaseId;
+    }
+    /**
+     * Gets the url.
+     *
+     * @readonly
+     */
+    get url() {
+        return this._url;
+    }
     /**
      * Establishes and manages a lock on a container for delete operations, or on a blob
      * for write and delete operations.
@@ -32470,41 +31295,29 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - option to configure lease management operations.
      * @returns Response data for acquire lease operation.
      */
-    BlobLeaseClient.prototype.acquireLease = function (duration, options) {
+    async acquireLease(duration, options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, e_1;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-acquireLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.acquireLease(tslib.__assign({ abortSignal: options.abortSignal, duration: duration, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }), proposedLeaseId: this._leaseId }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_1 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-acquireLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.acquireLease(Object.assign({ abortSignal: options.abortSignal, duration, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }), proposedLeaseId: this._leaseId }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * To change the ID of the lease.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
@@ -32515,44 +31328,31 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - option to configure lease management operations.
      * @returns Response data for change lease operation.
      */
-    BlobLeaseClient.prototype.changeLease = function (proposedLeaseId, options) {
+    async changeLease(proposedLeaseId, options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, response, e_2;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-changeLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _h.sent();
-                        this._leaseId = proposedLeaseId;
-                        return [2 /*return*/, response];
-                    case 3:
-                        e_2 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-changeLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            const response = await this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            this._leaseId = proposedLeaseId;
+            return response;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * To free the lease if it is no longer needed so that another client may
      * immediately acquire a lease against the container or the blob.
@@ -32563,41 +31363,29 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - option to configure lease management operations.
      * @returns Response data for release lease operation.
      */
-    BlobLeaseClient.prototype.releaseLease = function (options) {
+    async releaseLease(options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, e_3;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-releaseLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.releaseLease(this._leaseId, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_3 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-releaseLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.releaseLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * To renew the lease.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
@@ -32607,41 +31395,29 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - Optional option to configure lease management operations.
      * @returns Response data for renew lease operation.
      */
-    BlobLeaseClient.prototype.renewLease = function (options) {
+    async renewLease(options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, e_4;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-renewLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.renewLease(this._leaseId, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_4 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-renewLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.renewLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * To end the lease but ensure that another client cannot acquire a new lease
      * until the current lease period has expired.
@@ -32653,44 +31429,31 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - Optional options to configure lease management operations.
      * @returns Response data for break lease operation.
      */
-    BlobLeaseClient.prototype.breakLease = function (breakPeriod, options) {
+    async breakLease(breakPeriod, options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, operationOptions, e_5;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-breakLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        operationOptions = tslib.__assign({ abortSignal: options.abortSignal, breakPeriod: breakPeriod, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions));
-                        return [4 /*yield*/, this._containerOrBlobOperation.breakLease(operationOptions)];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_5 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-breakLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            const operationOptions = Object.assign({ abortSignal: options.abortSignal, breakPeriod, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions));
+            return await this._containerOrBlobOperation.breakLease(operationOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlobLeaseClient;
-}());
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -32698,8 +31461,7 @@ var BlobLeaseClient = /** @class */ (function () {
  *
  * A Node.js ReadableStream will internally retry when internal ReadableStream unexpected ends.
  */
-var RetriableReadableStream = /** @class */ (function (_super) {
-    tslib.__extends(RetriableReadableStream, _super);
+class RetriableReadableStream extends stream.Readable {
     /**
      * Creates an instance of RetriableReadableStream.
      *
@@ -32710,32 +31472,31 @@ var RetriableReadableStream = /** @class */ (function (_super) {
      * @param count - How much data in original data source to read
      * @param options -
      */
-    function RetriableReadableStream(source, getter, offset, count, options) {
-        if (options === void 0) { options = {}; }
-        var _this = _super.call(this, { highWaterMark: options.highWaterMark }) || this;
-        _this.retries = 0;
-        _this.sourceDataHandler = function (data) {
-            if (_this.options.doInjectErrorOnce) {
-                _this.options.doInjectErrorOnce = undefined;
-                _this.source.pause();
-                _this.source.removeAllListeners("data");
-                _this.source.emit("end");
+    constructor(source, getter, offset, count, options = {}) {
+        super({ highWaterMark: options.highWaterMark });
+        this.retries = 0;
+        this.sourceDataHandler = (data) => {
+            if (this.options.doInjectErrorOnce) {
+                this.options.doInjectErrorOnce = undefined;
+                this.source.pause();
+                this.source.removeAllListeners("data");
+                this.source.emit("end");
                 return;
             }
             // console.log(
             //   `Offset: ${this.offset}, Received ${data.length} from internal stream`
             // );
-            _this.offset += data.length;
-            if (_this.onProgress) {
-                _this.onProgress({ loadedBytes: _this.offset - _this.start });
+            this.offset += data.length;
+            if (this.onProgress) {
+                this.onProgress({ loadedBytes: this.offset - this.start });
             }
-            if (!_this.push(data)) {
-                _this.source.pause();
+            if (!this.push(data)) {
+                this.source.pause();
             }
         };
-        _this.sourceErrorOrEndHandler = function (err) {
+        this.sourceErrorOrEndHandler = (err) => {
             if (err && err.name === "AbortError") {
-                _this.destroy(err);
+                this.destroy(err);
                 return;
             }
             // console.log(
@@ -32743,69 +31504,67 @@ var RetriableReadableStream = /** @class */ (function (_super) {
             //     this.offset
             //   }, dest end : ${this.end}`
             // );
-            _this.removeSourceEventHandlers();
-            if (_this.offset - 1 === _this.end) {
-                _this.push(null);
+            this.removeSourceEventHandlers();
+            if (this.offset - 1 === this.end) {
+                this.push(null);
             }
-            else if (_this.offset <= _this.end) {
+            else if (this.offset <= this.end) {
                 // console.log(
                 //   `retries: ${this.retries}, max retries: ${this.maxRetries}`
                 // );
-                if (_this.retries < _this.maxRetryRequests) {
-                    _this.retries += 1;
-                    _this.getter(_this.offset)
-                        .then(function (newSource) {
-                        _this.source = newSource;
-                        _this.setSourceEventHandlers();
+                if (this.retries < this.maxRetryRequests) {
+                    this.retries += 1;
+                    this.getter(this.offset)
+                        .then((newSource) => {
+                        this.source = newSource;
+                        this.setSourceEventHandlers();
                     })
-                        .catch(function (error) {
-                        _this.destroy(error);
+                        .catch((error) => {
+                        this.destroy(error);
                     });
                 }
                 else {
-                    _this.destroy(new Error(
+                    this.destroy(new Error(
                     // tslint:disable-next-line:max-line-length
-                    "Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: " + (_this
-                        .offset - 1) + ", data needed offset: " + _this.end + ", retries: " + _this.retries + ", max retries: " + _this.maxRetryRequests));
+                    `Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: ${this
+                        .offset - 1}, data needed offset: ${this.end}, retries: ${this.retries}, max retries: ${this.maxRetryRequests}`));
                 }
             }
             else {
-                _this.destroy(new Error("Data corruption failure: Received more data than original request, data needed offset is " + _this.end + ", received offset: " + (_this.offset - 1)));
+                this.destroy(new Error(`Data corruption failure: Received more data than original request, data needed offset is ${this.end}, received offset: ${this.offset - 1}`));
             }
         };
-        _this.getter = getter;
-        _this.source = source;
-        _this.start = offset;
-        _this.offset = offset;
-        _this.end = offset + count - 1;
-        _this.maxRetryRequests =
+        this.getter = getter;
+        this.source = source;
+        this.start = offset;
+        this.offset = offset;
+        this.end = offset + count - 1;
+        this.maxRetryRequests =
             options.maxRetryRequests && options.maxRetryRequests >= 0 ? options.maxRetryRequests : 0;
-        _this.onProgress = options.onProgress;
-        _this.options = options;
-        _this.setSourceEventHandlers();
-        return _this;
+        this.onProgress = options.onProgress;
+        this.options = options;
+        this.setSourceEventHandlers();
     }
-    RetriableReadableStream.prototype._read = function () {
+    _read() {
         this.source.resume();
-    };
-    RetriableReadableStream.prototype.setSourceEventHandlers = function () {
+    }
+    setSourceEventHandlers() {
         this.source.on("data", this.sourceDataHandler);
         this.source.on("end", this.sourceErrorOrEndHandler);
         this.source.on("error", this.sourceErrorOrEndHandler);
-    };
-    RetriableReadableStream.prototype.removeSourceEventHandlers = function () {
+    }
+    removeSourceEventHandlers() {
         this.source.removeListener("data", this.sourceDataHandler);
         this.source.removeListener("end", this.sourceErrorOrEndHandler);
         this.source.removeListener("error", this.sourceErrorOrEndHandler);
-    };
-    RetriableReadableStream.prototype._destroy = function (error, callback) {
+    }
+    _destroy(error, callback) {
         // remove listener from source and release source
         this.removeSourceEventHandlers();
         this.source.destroy();
         callback(error === null ? undefined : error);
-    };
-    return RetriableReadableStream;
-}(stream.Readable));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -32818,7 +31577,7 @@ var RetriableReadableStream = /** @class */ (function (_super) {
  * The {@link readableStreamBody} stream will retry underlayer, you can just use it as a normal Node.js
  * Readable stream.
  */
-var BlobDownloadResponse = /** @class */ (function () {
+class BlobDownloadResponse {
     /**
      * Creates an instance of BlobDownloadResponse.
      *
@@ -32828,593 +31587,419 @@ var BlobDownloadResponse = /** @class */ (function () {
      * @param count -
      * @param options -
      */
-    function BlobDownloadResponse(originalResponse, getter, offset, count, options) {
-        if (options === void 0) { options = {}; }
+    constructor(originalResponse, getter, offset, count, options = {}) {
         this.originalResponse = originalResponse;
         this.blobDownloadStream = new RetriableReadableStream(this.originalResponse.readableStreamBody, getter, offset, count, options);
     }
-    Object.defineProperty(BlobDownloadResponse.prototype, "acceptRanges", {
-        /**
-         * Indicates that the service supports
-         * requests for partial file content.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.acceptRanges;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "cacheControl", {
-        /**
-         * Returns if it was previously specified
-         * for the file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.cacheControl;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentDisposition", {
-        /**
-         * Returns the value that was specified
-         * for the 'x-ms-content-disposition' header and specifies how to process the
-         * response.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentDisposition;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentEncoding", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Encoding request header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentEncoding;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentLanguage", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Language request header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentLanguage;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobSequenceNumber", {
-        /**
-         * The current sequence number for a
-         * page blob. This header is not returned for block blobs or append blobs.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobSequenceNumber;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobType", {
-        /**
-         * The blob's type. Possible values include:
-         * 'BlockBlob', 'PageBlob', 'AppendBlob'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentLength", {
-        /**
-         * The number of bytes present in the
-         * response body.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentLength;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentMD5", {
-        /**
-         * If the file has an MD5 hash and the
-         * request is to read the full file, this response header is returned so that
-         * the client can check for message content integrity. If the request is to
-         * read a specified range and the 'x-ms-range-get-content-md5' is set to
-         * true, then the request returns an MD5 hash for the range, as long as the
-         * range size is less than or equal to 4 MB. If neither of these sets of
-         * conditions is true, then no value is returned for the 'Content-MD5'
-         * header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentRange", {
-        /**
-         * Indicates the range of bytes returned if
-         * the client requested a subset of the file by setting the Range request
-         * header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentRange;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentType", {
-        /**
-         * The content type specified for the file.
-         * The default content type is 'application/octet-stream'
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyCompletedOn", {
-        /**
-         * Conclusion time of the last attempted
-         * Copy File operation where this file was the destination file. This value
-         * can specify the time of a completed, aborted, or failed copy attempt.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyCompletedOn;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyId", {
-        /**
-         * String identifier for the last attempted Copy
-         * File operation where this file was the destination file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyProgress", {
-        /**
-         * Contains the number of bytes copied and
-         * the total bytes in the source in the last attempted Copy File operation
-         * where this file was the destination file. Can show between 0 and
-         * Content-Length bytes copied.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyProgress;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copySource", {
-        /**
-         * URL up to 2KB in length that specifies the
-         * source file used in the last attempted Copy File operation where this file
-         * was the destination file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copySource;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyStatus", {
-        /**
-         * State of the copy operation
-         * identified by 'x-ms-copy-id'. Possible values include: 'pending',
-         * 'success', 'aborted', 'failed'
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyStatusDescription", {
-        /**
-         * Only appears when
-         * x-ms-copy-status is failed or pending. Describes cause of fatal or
-         * non-fatal copy operation failure.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyStatusDescription;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseDuration", {
-        /**
-         * When a blob is leased,
-         * specifies whether the lease is of infinite or fixed duration. Possible
-         * values include: 'infinite', 'fixed'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseDuration;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseState", {
-        /**
-         * Lease state of the blob. Possible
-         * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseState;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseStatus", {
-        /**
-         * The current lease status of the
-         * blob. Possible values include: 'locked', 'unlocked'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "date", {
-        /**
-         * A UTC date/time value generated by the service that
-         * indicates the time at which the response was initiated.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.date;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobCommittedBlockCount", {
-        /**
-         * The number of committed blocks
-         * present in the blob. This header is returned only for append blobs.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobCommittedBlockCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "etag", {
-        /**
-         * The ETag contains a value that you can use to
-         * perform operations conditionally, in quotes.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.etag;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "tagCount", {
-        /**
-         * The number of tags associated with the blob
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.tagCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "errorCode", {
-        /**
-         * The error code.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.errorCode;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isServerEncrypted", {
-        /**
-         * The value of this header is set to
-         * true if the file data and application metadata are completely encrypted
-         * using the specified algorithm. Otherwise, the value is set to false (when
-         * the file is unencrypted, or if only parts of the file/application metadata
-         * are encrypted).
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.isServerEncrypted;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobContentMD5", {
-        /**
-         * If the blob has a MD5 hash, and if
-         * request contains range header (Range or x-ms-range), this response header
-         * is returned with the value of the whole blob's MD5 value. This value may
-         * or may not be equal to the value returned in Content-MD5 header, with the
-         * latter calculated from the requested range.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobContentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "lastModified", {
-        /**
-         * Returns the date and time the file was last
-         * modified. Any operation that modifies the file or its properties updates
-         * the last modified time.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.lastModified;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "lastAccessed", {
-        /**
-         * Returns the UTC date and time generated by the service that indicates the time at which the blob was
-         * last read or written to.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.lastAccessed;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "metadata", {
-        /**
-         * A name-value pair
-         * to associate with a file storage object.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.metadata;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "requestId", {
-        /**
-         * This header uniquely identifies the request
-         * that was made and can be used for troubleshooting the request.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.requestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "clientRequestId", {
-        /**
-         * If a client request id header is sent in the request, this header will be present in the
-         * response with the same value.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.clientRequestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "version", {
-        /**
-         * Indicates the version of the Blob service used
-         * to execute the request.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.version;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "versionId", {
-        /**
-         * Indicates the versionId of the downloaded blob version.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.versionId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isCurrentVersion", {
-        /**
-         * Indicates whether version of this blob is a current version.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.isCurrentVersion;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "encryptionKeySha256", {
-        /**
-         * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
-         * when the blob was encrypted with a customer-provided key.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.encryptionKeySha256;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentCrc64", {
-        /**
-         * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
-         * true, then the request returns a crc64 for the range, as long as the range size is less than
-         * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
-         * specified in the same request, it will fail with 400(Bad Request)
-         */
-        get: function () {
-            return this.originalResponse.contentCrc64;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationDestinationPolicyId", {
-        /**
-         * Object Replication Policy Id of the destination blob.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.objectReplicationDestinationPolicyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationSourceProperties", {
-        /**
-         * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.objectReplicationSourceProperties;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isSealed", {
-        /**
-         * If this blob has been sealed.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.isSealed;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentAsBlob", {
-        /**
-         * The response body as a browser Blob.
-         * Always undefined in node.js.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobBody;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "readableStreamBody", {
-        /**
-         * The response body as a node.js Readable stream.
-         * Always undefined in the browser.
-         *
-         * It will automatically retry when internal read stream unexpected ends.
-         *
-         * @readonly
-         */
-        get: function () {
-            return coreHttp.isNode ? this.blobDownloadStream : undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "_response", {
-        /**
-         * The HTTP response.
-         */
-        get: function () {
-            return this.originalResponse._response;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    return BlobDownloadResponse;
-}());
+    /**
+     * Indicates that the service supports
+     * requests for partial file content.
+     *
+     * @readonly
+     */
+    get acceptRanges() {
+        return this.originalResponse.acceptRanges;
+    }
+    /**
+     * Returns if it was previously specified
+     * for the file.
+     *
+     * @readonly
+     */
+    get cacheControl() {
+        return this.originalResponse.cacheControl;
+    }
+    /**
+     * Returns the value that was specified
+     * for the 'x-ms-content-disposition' header and specifies how to process the
+     * response.
+     *
+     * @readonly
+     */
+    get contentDisposition() {
+        return this.originalResponse.contentDisposition;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Encoding request header.
+     *
+     * @readonly
+     */
+    get contentEncoding() {
+        return this.originalResponse.contentEncoding;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Language request header.
+     *
+     * @readonly
+     */
+    get contentLanguage() {
+        return this.originalResponse.contentLanguage;
+    }
+    /**
+     * The current sequence number for a
+     * page blob. This header is not returned for block blobs or append blobs.
+     *
+     * @readonly
+     */
+    get blobSequenceNumber() {
+        return this.originalResponse.blobSequenceNumber;
+    }
+    /**
+     * The blob's type. Possible values include:
+     * 'BlockBlob', 'PageBlob', 'AppendBlob'.
+     *
+     * @readonly
+     */
+    get blobType() {
+        return this.originalResponse.blobType;
+    }
+    /**
+     * The number of bytes present in the
+     * response body.
+     *
+     * @readonly
+     */
+    get contentLength() {
+        return this.originalResponse.contentLength;
+    }
+    /**
+     * If the file has an MD5 hash and the
+     * request is to read the full file, this response header is returned so that
+     * the client can check for message content integrity. If the request is to
+     * read a specified range and the 'x-ms-range-get-content-md5' is set to
+     * true, then the request returns an MD5 hash for the range, as long as the
+     * range size is less than or equal to 4 MB. If neither of these sets of
+     * conditions is true, then no value is returned for the 'Content-MD5'
+     * header.
+     *
+     * @readonly
+     */
+    get contentMD5() {
+        return this.originalResponse.contentMD5;
+    }
+    /**
+     * Indicates the range of bytes returned if
+     * the client requested a subset of the file by setting the Range request
+     * header.
+     *
+     * @readonly
+     */
+    get contentRange() {
+        return this.originalResponse.contentRange;
+    }
+    /**
+     * The content type specified for the file.
+     * The default content type is 'application/octet-stream'
+     *
+     * @readonly
+     */
+    get contentType() {
+        return this.originalResponse.contentType;
+    }
+    /**
+     * Conclusion time of the last attempted
+     * Copy File operation where this file was the destination file. This value
+     * can specify the time of a completed, aborted, or failed copy attempt.
+     *
+     * @readonly
+     */
+    get copyCompletedOn() {
+        return this.originalResponse.copyCompletedOn;
+    }
+    /**
+     * String identifier for the last attempted Copy
+     * File operation where this file was the destination file.
+     *
+     * @readonly
+     */
+    get copyId() {
+        return this.originalResponse.copyId;
+    }
+    /**
+     * Contains the number of bytes copied and
+     * the total bytes in the source in the last attempted Copy File operation
+     * where this file was the destination file. Can show between 0 and
+     * Content-Length bytes copied.
+     *
+     * @readonly
+     */
+    get copyProgress() {
+        return this.originalResponse.copyProgress;
+    }
+    /**
+     * URL up to 2KB in length that specifies the
+     * source file used in the last attempted Copy File operation where this file
+     * was the destination file.
+     *
+     * @readonly
+     */
+    get copySource() {
+        return this.originalResponse.copySource;
+    }
+    /**
+     * State of the copy operation
+     * identified by 'x-ms-copy-id'. Possible values include: 'pending',
+     * 'success', 'aborted', 'failed'
+     *
+     * @readonly
+     */
+    get copyStatus() {
+        return this.originalResponse.copyStatus;
+    }
+    /**
+     * Only appears when
+     * x-ms-copy-status is failed or pending. Describes cause of fatal or
+     * non-fatal copy operation failure.
+     *
+     * @readonly
+     */
+    get copyStatusDescription() {
+        return this.originalResponse.copyStatusDescription;
+    }
+    /**
+     * When a blob is leased,
+     * specifies whether the lease is of infinite or fixed duration. Possible
+     * values include: 'infinite', 'fixed'.
+     *
+     * @readonly
+     */
+    get leaseDuration() {
+        return this.originalResponse.leaseDuration;
+    }
+    /**
+     * Lease state of the blob. Possible
+     * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
+     *
+     * @readonly
+     */
+    get leaseState() {
+        return this.originalResponse.leaseState;
+    }
+    /**
+     * The current lease status of the
+     * blob. Possible values include: 'locked', 'unlocked'.
+     *
+     * @readonly
+     */
+    get leaseStatus() {
+        return this.originalResponse.leaseStatus;
+    }
+    /**
+     * A UTC date/time value generated by the service that
+     * indicates the time at which the response was initiated.
+     *
+     * @readonly
+     */
+    get date() {
+        return this.originalResponse.date;
+    }
+    /**
+     * The number of committed blocks
+     * present in the blob. This header is returned only for append blobs.
+     *
+     * @readonly
+     */
+    get blobCommittedBlockCount() {
+        return this.originalResponse.blobCommittedBlockCount;
+    }
+    /**
+     * The ETag contains a value that you can use to
+     * perform operations conditionally, in quotes.
+     *
+     * @readonly
+     */
+    get etag() {
+        return this.originalResponse.etag;
+    }
+    /**
+     * The number of tags associated with the blob
+     *
+     * @readonly
+     */
+    get tagCount() {
+        return this.originalResponse.tagCount;
+    }
+    /**
+     * The error code.
+     *
+     * @readonly
+     */
+    get errorCode() {
+        return this.originalResponse.errorCode;
+    }
+    /**
+     * The value of this header is set to
+     * true if the file data and application metadata are completely encrypted
+     * using the specified algorithm. Otherwise, the value is set to false (when
+     * the file is unencrypted, or if only parts of the file/application metadata
+     * are encrypted).
+     *
+     * @readonly
+     */
+    get isServerEncrypted() {
+        return this.originalResponse.isServerEncrypted;
+    }
+    /**
+     * If the blob has a MD5 hash, and if
+     * request contains range header (Range or x-ms-range), this response header
+     * is returned with the value of the whole blob's MD5 value. This value may
+     * or may not be equal to the value returned in Content-MD5 header, with the
+     * latter calculated from the requested range.
+     *
+     * @readonly
+     */
+    get blobContentMD5() {
+        return this.originalResponse.blobContentMD5;
+    }
+    /**
+     * Returns the date and time the file was last
+     * modified. Any operation that modifies the file or its properties updates
+     * the last modified time.
+     *
+     * @readonly
+     */
+    get lastModified() {
+        return this.originalResponse.lastModified;
+    }
+    /**
+     * Returns the UTC date and time generated by the service that indicates the time at which the blob was
+     * last read or written to.
+     *
+     * @readonly
+     */
+    get lastAccessed() {
+        return this.originalResponse.lastAccessed;
+    }
+    /**
+     * A name-value pair
+     * to associate with a file storage object.
+     *
+     * @readonly
+     */
+    get metadata() {
+        return this.originalResponse.metadata;
+    }
+    /**
+     * This header uniquely identifies the request
+     * that was made and can be used for troubleshooting the request.
+     *
+     * @readonly
+     */
+    get requestId() {
+        return this.originalResponse.requestId;
+    }
+    /**
+     * If a client request id header is sent in the request, this header will be present in the
+     * response with the same value.
+     *
+     * @readonly
+     */
+    get clientRequestId() {
+        return this.originalResponse.clientRequestId;
+    }
+    /**
+     * Indicates the version of the Blob service used
+     * to execute the request.
+     *
+     * @readonly
+     */
+    get version() {
+        return this.originalResponse.version;
+    }
+    /**
+     * Indicates the versionId of the downloaded blob version.
+     *
+     * @readonly
+     */
+    get versionId() {
+        return this.originalResponse.versionId;
+    }
+    /**
+     * Indicates whether version of this blob is a current version.
+     *
+     * @readonly
+     */
+    get isCurrentVersion() {
+        return this.originalResponse.isCurrentVersion;
+    }
+    /**
+     * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
+     * when the blob was encrypted with a customer-provided key.
+     *
+     * @readonly
+     */
+    get encryptionKeySha256() {
+        return this.originalResponse.encryptionKeySha256;
+    }
+    /**
+     * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
+     * true, then the request returns a crc64 for the range, as long as the range size is less than
+     * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
+     * specified in the same request, it will fail with 400(Bad Request)
+     */
+    get contentCrc64() {
+        return this.originalResponse.contentCrc64;
+    }
+    /**
+     * Object Replication Policy Id of the destination blob.
+     *
+     * @readonly
+     */
+    get objectReplicationDestinationPolicyId() {
+        return this.originalResponse.objectReplicationDestinationPolicyId;
+    }
+    /**
+     * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.
+     *
+     * @readonly
+     */
+    get objectReplicationSourceProperties() {
+        return this.originalResponse.objectReplicationSourceProperties;
+    }
+    /**
+     * If this blob has been sealed.
+     *
+     * @readonly
+     */
+    get isSealed() {
+        return this.originalResponse.isSealed;
+    }
+    /**
+     * The response body as a browser Blob.
+     * Always undefined in node.js.
+     *
+     * @readonly
+     */
+    get contentAsBlob() {
+        return this.originalResponse.blobBody;
+    }
+    /**
+     * The response body as a node.js Readable stream.
+     * Always undefined in the browser.
+     *
+     * It will automatically retry when internal read stream unexpected ends.
+     *
+     * @readonly
+     */
+    get readableStreamBody() {
+        return coreHttp.isNode ? this.blobDownloadStream : undefined;
+    }
+    /**
+     * The HTTP response.
+     */
+    get _response() {
+        return this.originalResponse._response;
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var AVRO_SYNC_MARKER_SIZE = 16;
-var AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
-var AVRO_CODEC_KEY = "avro.codec";
-var AVRO_SCHEMA_KEY = "avro.schema";
+const AVRO_SYNC_MARKER_SIZE = 16;
+const AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
+const AVRO_CODEC_KEY = "avro.codec";
+const AVRO_SCHEMA_KEY = "avro.schema";
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -33425,7 +32010,7 @@ function arraysEqual(a, b) {
         return false;
     if (a.length != b.length)
         return false;
-    for (var i = 0; i < a.length; ++i) {
+    for (let i = 0; i < a.length; ++i) {
         if (a[i] !== b[i])
             return false;
     }
@@ -33433,9 +32018,8 @@ function arraysEqual(a, b) {
 }
 
 // Copyright (c) Microsoft Corporation.
-var AvroParser = /** @class */ (function () {
-    function AvroParser() {
-    }
+// Licensed under the MIT license.
+class AvroParser {
     /**
      * Reads a fixed number of bytes from the stream.
      *
@@ -33443,294 +32027,135 @@ var AvroParser = /** @class */ (function () {
      * @param length -
      * @param options -
      */
-    AvroParser.readFixedBytes = function (stream, length, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var bytes;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, stream.read(length, { abortSignal: options.abortSignal })];
-                    case 1:
-                        bytes = _a.sent();
-                        if (bytes.length != length) {
-                            throw new Error("Hit stream end.");
-                        }
-                        return [2 /*return*/, bytes];
-                }
-            });
-        });
-    };
+    static async readFixedBytes(stream, length, options = {}) {
+        const bytes = await stream.read(length, { abortSignal: options.abortSignal });
+        if (bytes.length != length) {
+            throw new Error("Hit stream end.");
+        }
+        return bytes;
+    }
     /**
      * Reads a single byte from the stream.
      *
      * @param stream -
      * @param options -
      */
-    AvroParser.readByte = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buf;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 1, options)];
-                    case 1:
-                        buf = _a.sent();
-                        return [2 /*return*/, buf[0]];
-                }
-            });
-        });
-    };
+    static async readByte(stream, options = {}) {
+        const buf = await AvroParser.readFixedBytes(stream, 1, options);
+        return buf[0];
+    }
     // int and long are stored in variable-length zig-zag coding.
     // variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt
     // zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
-    AvroParser.readZigZagLong = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var zigZagEncoded, significanceInBit, byte, haveMoreByte, significanceInFloat, res;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        zigZagEncoded = 0;
-                        significanceInBit = 0;
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 2:
-                        byte = _a.sent();
-                        haveMoreByte = byte & 0x80;
-                        zigZagEncoded |= (byte & 0x7f) << significanceInBit;
-                        significanceInBit += 7;
-                        _a.label = 3;
-                    case 3:
-                        if (haveMoreByte && significanceInBit < 28) return [3 /*break*/, 1];
-                        _a.label = 4;
-                    case 4:
-                        if (!haveMoreByte) return [3 /*break*/, 9];
-                        // Switch to float arithmetic
-                        zigZagEncoded = zigZagEncoded;
-                        significanceInFloat = 268435456; // 2 ** 28.
-                        _a.label = 5;
-                    case 5: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 6:
-                        byte = _a.sent();
-                        zigZagEncoded += (byte & 0x7f) * significanceInFloat;
-                        significanceInFloat *= 128; // 2 ** 7
-                        _a.label = 7;
-                    case 7:
-                        if (byte & 0x80) return [3 /*break*/, 5];
-                        _a.label = 8;
-                    case 8:
-                        res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
-                        if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
-                            throw new Error("Integer overflow.");
-                        }
-                        return [2 /*return*/, res];
-                    case 9: return [2 /*return*/, (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1)];
-                }
-            });
-        });
-    };
-    AvroParser.readLong = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
-            });
-        });
-    };
-    AvroParser.readInt = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
-            });
-        });
-    };
-    AvroParser.readNull = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, null];
-            });
-        });
-    };
-    AvroParser.readBoolean = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var b;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 1:
-                        b = _a.sent();
-                        if (b == 1) {
-                            return [2 /*return*/, true];
-                        }
-                        else if (b == 0) {
-                            return [2 /*return*/, false];
-                        }
-                        else {
-                            throw new Error("Byte was not a boolean.");
-                        }
-                }
-            });
-        });
-    };
-    AvroParser.readFloat = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, view;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 4, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
-                        return [2 /*return*/, view.getFloat32(0, true)]; // littleEndian = true
-                }
-            });
-        });
-    };
-    AvroParser.readDouble = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, view;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 8, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
-                        return [2 /*return*/, view.getFloat64(0, true)]; // littleEndian = true
-                }
-            });
-        });
-    };
-    AvroParser.readBytes = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var size;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 1:
-                        size = _a.sent();
-                        if (size < 0) {
-                            throw new Error("Bytes size was negative.");
-                        }
-                        return [4 /*yield*/, stream.read(size, { abortSignal: options.abortSignal })];
-                    case 2: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    AvroParser.readString = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, utf8decoder;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        // polyfill TextDecoder to be backward compatible with older
-                        // nodejs that doesn't expose TextDecoder as a global variable
-                        if (typeof TextDecoder === "undefined" && "function" !== "undefined") {
-                            global.TextDecoder = __webpack_require__(669).TextDecoder;
-                        }
-                        utf8decoder = new TextDecoder();
-                        return [2 /*return*/, utf8decoder.decode(u8arr)];
-                }
-            });
-        });
-    };
-    AvroParser.readMapPair = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var key, value;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readString(stream, options)];
-                    case 1:
-                        key = _a.sent();
-                        return [4 /*yield*/, readItemMethod(stream, options)];
-                    case 2:
-                        value = _a.sent();
-                        return [2 /*return*/, { key: key, value: value }];
-                }
-            });
-        });
-    };
-    AvroParser.readMap = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var readPairMethod, pairs, dict, _i, pairs_1, pair;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        readPairMethod = function (stream, options) {
-                            if (options === void 0) { options = {}; }
-                            return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, AvroParser.readMapPair(stream, readItemMethod, options)];
-                                        case 1: return [2 /*return*/, _a.sent()];
-                                    }
-                                });
-                            });
-                        };
-                        return [4 /*yield*/, AvroParser.readArray(stream, readPairMethod, options)];
-                    case 1:
-                        pairs = _a.sent();
-                        dict = {};
-                        for (_i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) {
-                            pair = pairs_1[_i];
-                            dict[pair.key] = pair.value;
-                        }
-                        return [2 /*return*/, dict];
-                }
-            });
-        });
-    };
-    AvroParser.readArray = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var items, count, item;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        items = [];
-                        return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 1:
-                        count = _a.sent();
-                        _a.label = 2;
-                    case 2:
-                        if (!(count != 0)) return [3 /*break*/, 8];
-                        if (!(count < 0)) return [3 /*break*/, 4];
-                        // Ignore block sizes
-                        return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 3:
-                        // Ignore block sizes
-                        _a.sent();
-                        count = -count;
-                        _a.label = 4;
-                    case 4:
-                        if (!count--) return [3 /*break*/, 6];
-                        return [4 /*yield*/, readItemMethod(stream, options)];
-                    case 5:
-                        item = _a.sent();
-                        items.push(item);
-                        return [3 /*break*/, 4];
-                    case 6: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 7:
-                        count = _a.sent();
-                        return [3 /*break*/, 2];
-                    case 8: return [2 /*return*/, items];
-                }
-            });
-        });
-    };
-    return AvroParser;
-}());
+    static async readZigZagLong(stream, options = {}) {
+        let zigZagEncoded = 0;
+        let significanceInBit = 0;
+        let byte, haveMoreByte, significanceInFloat;
+        do {
+            byte = await AvroParser.readByte(stream, options);
+            haveMoreByte = byte & 0x80;
+            zigZagEncoded |= (byte & 0x7f) << significanceInBit;
+            significanceInBit += 7;
+        } while (haveMoreByte && significanceInBit < 28); // bitwise operation only works for 32-bit integers
+        if (haveMoreByte) {
+            // Switch to float arithmetic
+            zigZagEncoded = zigZagEncoded;
+            significanceInFloat = 268435456; // 2 ** 28.
+            do {
+                byte = await AvroParser.readByte(stream, options);
+                zigZagEncoded += (byte & 0x7f) * significanceInFloat;
+                significanceInFloat *= 128; // 2 ** 7
+            } while (byte & 0x80);
+            const res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
+            if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
+                throw new Error("Integer overflow.");
+            }
+            return res;
+        }
+        return (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1);
+    }
+    static async readLong(stream, options = {}) {
+        return AvroParser.readZigZagLong(stream, options);
+    }
+    static async readInt(stream, options = {}) {
+        return AvroParser.readZigZagLong(stream, options);
+    }
+    static async readNull() {
+        return null;
+    }
+    static async readBoolean(stream, options = {}) {
+        const b = await AvroParser.readByte(stream, options);
+        if (b == 1) {
+            return true;
+        }
+        else if (b == 0) {
+            return false;
+        }
+        else {
+            throw new Error("Byte was not a boolean.");
+        }
+    }
+    static async readFloat(stream, options = {}) {
+        const u8arr = await AvroParser.readFixedBytes(stream, 4, options);
+        const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
+        return view.getFloat32(0, true); // littleEndian = true
+    }
+    static async readDouble(stream, options = {}) {
+        const u8arr = await AvroParser.readFixedBytes(stream, 8, options);
+        const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
+        return view.getFloat64(0, true); // littleEndian = true
+    }
+    static async readBytes(stream, options = {}) {
+        const size = await AvroParser.readLong(stream, options);
+        if (size < 0) {
+            throw new Error("Bytes size was negative.");
+        }
+        return await stream.read(size, { abortSignal: options.abortSignal });
+    }
+    static async readString(stream, options = {}) {
+        const u8arr = await AvroParser.readBytes(stream, options);
+        // polyfill TextDecoder to be backward compatible with older
+        // nodejs that doesn't expose TextDecoder as a global variable
+        if (typeof TextDecoder === "undefined" && "function" !== "undefined") {
+            global.TextDecoder = __webpack_require__(669).TextDecoder;
+        }
+        // FUTURE: need TextDecoder polyfill for IE
+        const utf8decoder = new TextDecoder();
+        return utf8decoder.decode(u8arr);
+    }
+    static async readMapPair(stream, readItemMethod, options = {}) {
+        const key = await AvroParser.readString(stream, options);
+        // FUTURE: this won't work with readFixed (currently not supported) which needs a length as the parameter.
+        const value = await readItemMethod(stream, options);
+        return { key, value };
+    }
+    static async readMap(stream, readItemMethod, options = {}) {
+        const readPairMethod = async (stream, options = {}) => {
+            return await AvroParser.readMapPair(stream, readItemMethod, options);
+        };
+        const pairs = await AvroParser.readArray(stream, readPairMethod, options);
+        const dict = {};
+        for (const pair of pairs) {
+            dict[pair.key] = pair.value;
+        }
+        return dict;
+    }
+    static async readArray(stream, readItemMethod, options = {}) {
+        const items = [];
+        for (let count = await AvroParser.readLong(stream, options); count != 0; count = await AvroParser.readLong(stream, options)) {
+            if (count < 0) {
+                // Ignore block sizes
+                await AvroParser.readLong(stream, options);
+                count = -count;
+            }
+            while (count--) {
+                const item = await readItemMethod(stream, options);
+                items.push(item);
+            }
+        }
+        return items;
+    }
+}
 var AvroComplex;
 (function (AvroComplex) {
     AvroComplex["RECORD"] = "record";
@@ -33740,13 +32165,11 @@ var AvroComplex;
     AvroComplex["UNION"] = "union";
     AvroComplex["FIXED"] = "fixed";
 })(AvroComplex || (AvroComplex = {}));
-var AvroType = /** @class */ (function () {
-    function AvroType() {
-    }
+class AvroType {
     /**
      * Determines the AvroType from the Avro Schema.
      */
-    AvroType.fromSchema = function (schema) {
+    static fromSchema(schema) {
         if (typeof schema === "string") {
             return AvroType.fromStringSchema(schema);
         }
@@ -33756,8 +32179,8 @@ var AvroType = /** @class */ (function () {
         else {
             return AvroType.fromObjectSchema(schema);
         }
-    };
-    AvroType.fromStringSchema = function (schema) {
+    }
+    static fromStringSchema(schema) {
         switch (schema) {
             case AvroPrimitive.NULL:
             case AvroPrimitive.BOOLEAN:
@@ -33769,14 +32192,14 @@ var AvroType = /** @class */ (function () {
             case AvroPrimitive.STRING:
                 return new AvroPrimitiveType(schema);
             default:
-                throw new Error("Unexpected Avro type " + schema);
+                throw new Error(`Unexpected Avro type ${schema}`);
         }
-    };
-    AvroType.fromArraySchema = function (schema) {
+    }
+    static fromArraySchema(schema) {
         return new AvroUnionType(schema.map(AvroType.fromSchema));
-    };
-    AvroType.fromObjectSchema = function (schema) {
-        var type = schema.type;
+    }
+    static fromObjectSchema(schema) {
+        const type = schema.type;
         // Primitives can be defined as strings or objects
         try {
             return AvroType.fromStringSchema(type);
@@ -33785,41 +32208,39 @@ var AvroType = /** @class */ (function () {
         switch (type) {
             case AvroComplex.RECORD:
                 if (schema.aliases) {
-                    throw new Error("aliases currently is not supported, schema: " + schema);
+                    throw new Error(`aliases currently is not supported, schema: ${schema}`);
                 }
                 if (!schema.name) {
-                    throw new Error("Required attribute 'name' doesn't exist on schema: " + schema);
+                    throw new Error(`Required attribute 'name' doesn't exist on schema: ${schema}`);
                 }
-                var fields = {};
+                const fields = {};
                 if (!schema.fields) {
-                    throw new Error("Required attribute 'fields' doesn't exist on schema: " + schema);
+                    throw new Error(`Required attribute 'fields' doesn't exist on schema: ${schema}`);
                 }
-                for (var _i = 0, _a = schema.fields; _i < _a.length; _i++) {
-                    var field = _a[_i];
+                for (const field of schema.fields) {
                     fields[field.name] = AvroType.fromSchema(field.type);
                 }
                 return new AvroRecordType(fields, schema.name);
             case AvroComplex.ENUM:
                 if (schema.aliases) {
-                    throw new Error("aliases currently is not supported, schema: " + schema);
+                    throw new Error(`aliases currently is not supported, schema: ${schema}`);
                 }
                 if (!schema.symbols) {
-                    throw new Error("Required attribute 'symbols' doesn't exist on schema: " + schema);
+                    throw new Error(`Required attribute 'symbols' doesn't exist on schema: ${schema}`);
                 }
                 return new AvroEnumType(schema.symbols);
             case AvroComplex.MAP:
                 if (!schema.values) {
-                    throw new Error("Required attribute 'values' doesn't exist on schema: " + schema);
+                    throw new Error(`Required attribute 'values' doesn't exist on schema: ${schema}`);
                 }
                 return new AvroMapType(AvroType.fromSchema(schema.values));
             case AvroComplex.ARRAY: // Unused today
             case AvroComplex.FIXED: // Unused today
             default:
-                throw new Error("Unexpected Avro type " + type + " in " + schema);
+                throw new Error(`Unexpected Avro type ${type} in ${schema}`);
         }
-    };
-    return AvroType;
-}());
+    }
+}
 var AvroPrimitive;
 (function (AvroPrimitive) {
     AvroPrimitive["NULL"] = "null";
@@ -33831,179 +32252,87 @@ var AvroPrimitive;
     AvroPrimitive["BYTES"] = "bytes";
     AvroPrimitive["STRING"] = "string";
 })(AvroPrimitive || (AvroPrimitive = {}));
-var AvroPrimitiveType = /** @class */ (function (_super) {
-    tslib.__extends(AvroPrimitiveType, _super);
-    function AvroPrimitiveType(primitive) {
-        var _this = _super.call(this) || this;
-        _this._primitive = primitive;
-        return _this;
+class AvroPrimitiveType extends AvroType {
+    constructor(primitive) {
+        super();
+        this._primitive = primitive;
     }
-    AvroPrimitiveType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = this._primitive;
-                        switch (_a) {
-                            case AvroPrimitive.NULL: return [3 /*break*/, 1];
-                            case AvroPrimitive.BOOLEAN: return [3 /*break*/, 3];
-                            case AvroPrimitive.INT: return [3 /*break*/, 5];
-                            case AvroPrimitive.LONG: return [3 /*break*/, 7];
-                            case AvroPrimitive.FLOAT: return [3 /*break*/, 9];
-                            case AvroPrimitive.DOUBLE: return [3 /*break*/, 11];
-                            case AvroPrimitive.BYTES: return [3 /*break*/, 13];
-                            case AvroPrimitive.STRING: return [3 /*break*/, 15];
-                        }
-                        return [3 /*break*/, 17];
-                    case 1: return [4 /*yield*/, AvroParser.readNull()];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3: return [4 /*yield*/, AvroParser.readBoolean(stream, options)];
-                    case 4: return [2 /*return*/, _b.sent()];
-                    case 5: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 6: return [2 /*return*/, _b.sent()];
-                    case 7: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 8: return [2 /*return*/, _b.sent()];
-                    case 9: return [4 /*yield*/, AvroParser.readFloat(stream, options)];
-                    case 10: return [2 /*return*/, _b.sent()];
-                    case 11: return [4 /*yield*/, AvroParser.readDouble(stream, options)];
-                    case 12: return [2 /*return*/, _b.sent()];
-                    case 13: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
-                    case 14: return [2 /*return*/, _b.sent()];
-                    case 15: return [4 /*yield*/, AvroParser.readString(stream, options)];
-                    case 16: return [2 /*return*/, _b.sent()];
-                    case 17: throw new Error("Unknown Avro Primitive");
-                }
-            });
-        });
-    };
-    return AvroPrimitiveType;
-}(AvroType));
-var AvroEnumType = /** @class */ (function (_super) {
-    tslib.__extends(AvroEnumType, _super);
-    function AvroEnumType(symbols) {
-        var _this = _super.call(this) || this;
-        _this._symbols = symbols;
-        return _this;
+    async read(stream, options = {}) {
+        switch (this._primitive) {
+            case AvroPrimitive.NULL:
+                return await AvroParser.readNull();
+            case AvroPrimitive.BOOLEAN:
+                return await AvroParser.readBoolean(stream, options);
+            case AvroPrimitive.INT:
+                return await AvroParser.readInt(stream, options);
+            case AvroPrimitive.LONG:
+                return await AvroParser.readLong(stream, options);
+            case AvroPrimitive.FLOAT:
+                return await AvroParser.readFloat(stream, options);
+            case AvroPrimitive.DOUBLE:
+                return await AvroParser.readDouble(stream, options);
+            case AvroPrimitive.BYTES:
+                return await AvroParser.readBytes(stream, options);
+            case AvroPrimitive.STRING:
+                return await AvroParser.readString(stream, options);
+            default:
+                throw new Error("Unknown Avro Primitive");
+        }
     }
-    AvroEnumType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var value;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 1:
-                        value = _a.sent();
-                        return [2 /*return*/, this._symbols[value]];
-                }
-            });
-        });
-    };
-    return AvroEnumType;
-}(AvroType));
-var AvroUnionType = /** @class */ (function (_super) {
-    tslib.__extends(AvroUnionType, _super);
-    function AvroUnionType(types) {
-        var _this = _super.call(this) || this;
-        _this._types = types;
-        return _this;
+}
+class AvroEnumType extends AvroType {
+    constructor(symbols) {
+        super();
+        this._symbols = symbols;
     }
-    AvroUnionType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var typeIndex;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 1:
-                        typeIndex = _a.sent();
-                        return [4 /*yield*/, this._types[typeIndex].read(stream, options)];
-                    case 2: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    return AvroUnionType;
-}(AvroType));
-var AvroMapType = /** @class */ (function (_super) {
-    tslib.__extends(AvroMapType, _super);
-    function AvroMapType(itemType) {
-        var _this = _super.call(this) || this;
-        _this._itemType = itemType;
-        return _this;
+    async read(stream, options = {}) {
+        const value = await AvroParser.readInt(stream, options);
+        return this._symbols[value];
     }
-    AvroMapType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var readItemMethod;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        readItemMethod = function (s, options) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                            return tslib.__generator(this, function (_a) {
-                                switch (_a.label) {
-                                    case 0: return [4 /*yield*/, this._itemType.read(s, options)];
-                                    case 1: return [2 /*return*/, _a.sent()];
-                                }
-                            });
-                        }); };
-                        return [4 /*yield*/, AvroParser.readMap(stream, readItemMethod, options)];
-                    case 1: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    return AvroMapType;
-}(AvroType));
-var AvroRecordType = /** @class */ (function (_super) {
-    tslib.__extends(AvroRecordType, _super);
-    function AvroRecordType(fields, name) {
-        var _this = _super.call(this) || this;
-        _this._fields = fields;
-        _this._name = name;
-        return _this;
+}
+class AvroUnionType extends AvroType {
+    constructor(types) {
+        super();
+        this._types = types;
     }
-    AvroRecordType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var record, _a, _b, _i, key, _c, _d;
-            return tslib.__generator(this, function (_e) {
-                switch (_e.label) {
-                    case 0:
-                        record = {};
-                        record["$schema"] = this._name;
-                        _a = [];
-                        for (_b in this._fields)
-                            _a.push(_b);
-                        _i = 0;
-                        _e.label = 1;
-                    case 1:
-                        if (!(_i < _a.length)) return [3 /*break*/, 4];
-                        key = _a[_i];
-                        if (!this._fields.hasOwnProperty(key)) return [3 /*break*/, 3];
-                        _c = record;
-                        _d = key;
-                        return [4 /*yield*/, this._fields[key].read(stream, options)];
-                    case 2:
-                        _c[_d] = _e.sent();
-                        _e.label = 3;
-                    case 3:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 4: return [2 /*return*/, record];
-                }
-            });
-        });
-    };
-    return AvroRecordType;
-}(AvroType));
+    async read(stream, options = {}) {
+        const typeIndex = await AvroParser.readInt(stream, options);
+        return await this._types[typeIndex].read(stream, options);
+    }
+}
+class AvroMapType extends AvroType {
+    constructor(itemType) {
+        super();
+        this._itemType = itemType;
+    }
+    async read(stream, options = {}) {
+        const readItemMethod = async (s, options) => {
+            return await this._itemType.read(s, options);
+        };
+        return await AvroParser.readMap(stream, readItemMethod, options);
+    }
+}
+class AvroRecordType extends AvroType {
+    constructor(fields, name) {
+        super();
+        this._fields = fields;
+        this._name = name;
+    }
+    async read(stream, options = {}) {
+        const record = {};
+        record["$schema"] = this._name;
+        for (const key in this._fields) {
+            if (this._fields.hasOwnProperty(key)) {
+                record[key] = await this._fields[key].read(stream, options);
+            }
+        }
+        return record;
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var AvroReader = /** @class */ (function () {
-    function AvroReader(dataStream, headerStream, currentBlockOffset, indexWithinCurrentBlock) {
+class AvroReader {
+    constructor(dataStream, headerStream, currentBlockOffset, indexWithinCurrentBlock) {
         this._dataStream = dataStream;
         this._headerStream = headerStream || dataStream;
         this._initialized = false;
@@ -34011,261 +32340,178 @@ var AvroReader = /** @class */ (function () {
         this._objectIndex = indexWithinCurrentBlock || 0;
         this._initialBlockOffset = currentBlockOffset || 0;
     }
-    Object.defineProperty(AvroReader.prototype, "blockOffset", {
-        get: function () {
-            return this._blockOffset;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(AvroReader.prototype, "objectIndex", {
-        get: function () {
-            return this._objectIndex;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    AvroReader.prototype.initialize = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var header, _a, codec, _b, schema, _c, i;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_INIT_BYTES.length, {
-                            abortSignal: options.abortSignal
-                        })];
-                    case 1:
-                        header = _d.sent();
-                        if (!arraysEqual(header, AVRO_INIT_BYTES)) {
-                            throw new Error("Stream is not an Avro file.");
-                        }
-                        // File metadata is written as if defined by the following map schema:
-                        // { "type": "map", "values": "bytes"}
-                        _a = this;
-                        return [4 /*yield*/, AvroParser.readMap(this._headerStream, AvroParser.readString, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 2:
-                        // File metadata is written as if defined by the following map schema:
-                        // { "type": "map", "values": "bytes"}
-                        _a._metadata = _d.sent();
-                        codec = this._metadata[AVRO_CODEC_KEY];
-                        if (!(codec == undefined || codec == "null")) {
-                            throw new Error("Codecs are not supported");
-                        }
-                        // The 16-byte, randomly-generated sync marker for this file.
-                        _b = this;
-                        return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_SYNC_MARKER_SIZE, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 3:
-                        // The 16-byte, randomly-generated sync marker for this file.
-                        _b._syncMarker = _d.sent();
-                        schema = JSON.parse(this._metadata[AVRO_SCHEMA_KEY]);
-                        this._itemType = AvroType.fromSchema(schema);
-                        if (this._blockOffset == 0) {
-                            this._blockOffset = this._initialBlockOffset + this._dataStream.position;
-                        }
-                        _c = this;
-                        return [4 /*yield*/, AvroParser.readLong(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 4:
-                        _c._itemsRemainingInBlock = _d.sent();
-                        // skip block length
-                        return [4 /*yield*/, AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal })];
-                    case 5:
-                        // skip block length
-                        _d.sent();
-                        this._initialized = true;
-                        if (!(this._objectIndex && this._objectIndex > 0)) return [3 /*break*/, 9];
-                        i = 0;
-                        _d.label = 6;
-                    case 6:
-                        if (!(i < this._objectIndex)) return [3 /*break*/, 9];
-                        return [4 /*yield*/, this._itemType.read(this._dataStream, { abortSignal: options.abortSignal })];
-                    case 7:
-                        _d.sent();
-                        this._itemsRemainingInBlock--;
-                        _d.label = 8;
-                    case 8:
-                        i++;
-                        return [3 /*break*/, 6];
-                    case 9: return [2 /*return*/];
-                }
-            });
+    get blockOffset() {
+        return this._blockOffset;
+    }
+    get objectIndex() {
+        return this._objectIndex;
+    }
+    async initialize(options = {}) {
+        const header = await AvroParser.readFixedBytes(this._headerStream, AVRO_INIT_BYTES.length, {
+            abortSignal: options.abortSignal
         });
-    };
-    AvroReader.prototype.hasNext = function () {
+        if (!arraysEqual(header, AVRO_INIT_BYTES)) {
+            throw new Error("Stream is not an Avro file.");
+        }
+        // File metadata is written as if defined by the following map schema:
+        // { "type": "map", "values": "bytes"}
+        this._metadata = await AvroParser.readMap(this._headerStream, AvroParser.readString, {
+            abortSignal: options.abortSignal
+        });
+        // Validate codec
+        const codec = this._metadata[AVRO_CODEC_KEY];
+        if (!(codec == undefined || codec == "null")) {
+            throw new Error("Codecs are not supported");
+        }
+        // The 16-byte, randomly-generated sync marker for this file.
+        this._syncMarker = await AvroParser.readFixedBytes(this._headerStream, AVRO_SYNC_MARKER_SIZE, {
+            abortSignal: options.abortSignal
+        });
+        // Parse the schema
+        const schema = JSON.parse(this._metadata[AVRO_SCHEMA_KEY]);
+        this._itemType = AvroType.fromSchema(schema);
+        if (this._blockOffset == 0) {
+            this._blockOffset = this._initialBlockOffset + this._dataStream.position;
+        }
+        this._itemsRemainingInBlock = await AvroParser.readLong(this._dataStream, {
+            abortSignal: options.abortSignal
+        });
+        // skip block length
+        await AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal });
+        this._initialized = true;
+        if (this._objectIndex && this._objectIndex > 0) {
+            for (let i = 0; i < this._objectIndex; i++) {
+                await this._itemType.read(this._dataStream, { abortSignal: options.abortSignal });
+                this._itemsRemainingInBlock--;
+            }
+        }
+    }
+    hasNext() {
         return !this._initialized || this._itemsRemainingInBlock > 0;
-    };
-    AvroReader.prototype.parseObjects = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function parseObjects_1() {
-            var result, marker, _a, err_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!!this._initialized) return [3 /*break*/, 2];
-                        return [4 /*yield*/, tslib.__await(this.initialize(options))];
-                    case 1:
-                        _b.sent();
-                        _b.label = 2;
-                    case 2:
-                        if (!this.hasNext()) return [3 /*break*/, 13];
-                        return [4 /*yield*/, tslib.__await(this._itemType.read(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 3:
-                        result = _b.sent();
-                        this._itemsRemainingInBlock--;
-                        this._objectIndex++;
-                        if (!(this._itemsRemainingInBlock == 0)) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(AvroParser.readFixedBytes(this._dataStream, AVRO_SYNC_MARKER_SIZE, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 4:
-                        marker = _b.sent();
-                        this._blockOffset = this._initialBlockOffset + this._dataStream.position;
-                        this._objectIndex = 0;
-                        if (!arraysEqual(this._syncMarker, marker)) {
-                            throw new Error("Stream is not a valid Avro file.");
-                        }
-                        _b.label = 5;
-                    case 5:
-                        _b.trys.push([5, 7, , 8]);
-                        _a = this;
-                        return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 6:
-                        _a._itemsRemainingInBlock = _b.sent();
-                        return [3 /*break*/, 8];
-                    case 7:
-                        err_1 = _b.sent();
+    }
+    parseObjects(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* parseObjects_1() {
+            if (!this._initialized) {
+                yield tslib.__await(this.initialize(options));
+            }
+            while (this.hasNext()) {
+                const result = yield tslib.__await(this._itemType.read(this._dataStream, {
+                    abortSignal: options.abortSignal
+                }));
+                this._itemsRemainingInBlock--;
+                this._objectIndex++;
+                if (this._itemsRemainingInBlock == 0) {
+                    const marker = yield tslib.__await(AvroParser.readFixedBytes(this._dataStream, AVRO_SYNC_MARKER_SIZE, {
+                        abortSignal: options.abortSignal
+                    }));
+                    this._blockOffset = this._initialBlockOffset + this._dataStream.position;
+                    this._objectIndex = 0;
+                    if (!arraysEqual(this._syncMarker, marker)) {
+                        throw new Error("Stream is not a valid Avro file.");
+                    }
+                    try {
+                        this._itemsRemainingInBlock = yield tslib.__await(AvroParser.readLong(this._dataStream, {
+                            abortSignal: options.abortSignal
+                        }));
+                    }
+                    catch (err) {
                         // We hit the end of the stream.
                         this._itemsRemainingInBlock = 0;
-                        return [3 /*break*/, 8];
-                    case 8:
-                        if (!(this._itemsRemainingInBlock > 0)) return [3 /*break*/, 10];
+                    }
+                    if (this._itemsRemainingInBlock > 0) {
                         // Ignore block size
-                        return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal }))];
-                    case 9:
-                        // Ignore block size
-                        _b.sent();
-                        _b.label = 10;
-                    case 10: return [4 /*yield*/, tslib.__await(result)];
-                    case 11: return [4 /*yield*/, _b.sent()];
-                    case 12:
-                        _b.sent();
-                        return [3 /*break*/, 2];
-                    case 13: return [2 /*return*/];
+                        yield tslib.__await(AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal }));
+                    }
                 }
-            });
+                yield yield tslib.__await(result);
+            }
         });
-    };
-    return AvroReader;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var AvroReadable = /** @class */ (function () {
-    function AvroReadable() {
-    }
-    return AvroReadable;
-}());
+class AvroReadable {
+}
 
 // Copyright (c) Microsoft Corporation.
-var ABORT_ERROR = new abortController.AbortError("Reading from the avro stream was aborted.");
-var AvroReadableFromStream = /** @class */ (function (_super) {
-    tslib.__extends(AvroReadableFromStream, _super);
-    function AvroReadableFromStream(readable) {
-        var _this = _super.call(this) || this;
-        _this._readable = readable;
-        _this._position = 0;
-        return _this;
+const ABORT_ERROR = new abortController.AbortError("Reading from the avro stream was aborted.");
+class AvroReadableFromStream extends AvroReadable {
+    constructor(readable) {
+        super();
+        this._readable = readable;
+        this._position = 0;
     }
-    AvroReadableFromStream.prototype.toUint8Array = function (data) {
+    toUint8Array(data) {
         if (typeof data === "string") {
             return Buffer.from(data);
         }
         return data;
-    };
-    Object.defineProperty(AvroReadableFromStream.prototype, "position", {
-        get: function () {
-            return this._position;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    AvroReadableFromStream.prototype.read = function (size, options) {
+    }
+    get position() {
+        return this._position;
+    }
+    async read(size, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var chunk;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
-                    throw ABORT_ERROR;
-                }
-                if (size < 0) {
-                    throw new Error("size parameter should be positive: " + size);
-                }
-                if (size === 0) {
-                    return [2 /*return*/, new Uint8Array()];
-                }
-                if (!this._readable.readable) {
-                    throw new Error("Stream no longer readable.");
-                }
-                chunk = this._readable.read(size);
-                if (chunk) {
-                    this._position += chunk.length;
-                    // chunk.length maybe less than desired size if the stream ends.
-                    return [2 /*return*/, this.toUint8Array(chunk)];
-                }
-                else {
-                    // register callback to wait for enough data to read
-                    return [2 /*return*/, new Promise(function (resolve, reject) {
-                            var cleanUp = function () {
-                                _this._readable.removeListener("readable", readableCallback);
-                                _this._readable.removeListener("error", rejectCallback);
-                                _this._readable.removeListener("end", rejectCallback);
-                                _this._readable.removeListener("close", rejectCallback);
-                                if (options.abortSignal) {
-                                    options.abortSignal.removeEventListener("abort", abortHandler);
-                                }
-                            };
-                            var readableCallback = function () {
-                                var chunk = _this._readable.read(size);
-                                if (chunk) {
-                                    _this._position += chunk.length;
-                                    cleanUp();
-                                    // chunk.length maybe less than desired size if the stream ends.
-                                    resolve(_this.toUint8Array(chunk));
-                                }
-                            };
-                            var rejectCallback = function () {
-                                cleanUp();
-                                reject();
-                            };
-                            var abortHandler = function () {
-                                cleanUp();
-                                reject(ABORT_ERROR);
-                            };
-                            _this._readable.on("readable", readableCallback);
-                            _this._readable.once("error", rejectCallback);
-                            _this._readable.once("end", rejectCallback);
-                            _this._readable.once("close", rejectCallback);
-                            if (options.abortSignal) {
-                                options.abortSignal.addEventListener("abort", abortHandler);
-                            }
-                        })];
+        if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
+            throw ABORT_ERROR;
+        }
+        if (size < 0) {
+            throw new Error(`size parameter should be positive: ${size}`);
+        }
+        if (size === 0) {
+            return new Uint8Array();
+        }
+        if (!this._readable.readable) {
+            throw new Error("Stream no longer readable.");
+        }
+        // See if there is already enough data.
+        const chunk = this._readable.read(size);
+        if (chunk) {
+            this._position += chunk.length;
+            // chunk.length maybe less than desired size if the stream ends.
+            return this.toUint8Array(chunk);
+        }
+        else {
+            // register callback to wait for enough data to read
+            return new Promise((resolve, reject) => {
+                const cleanUp = () => {
+                    this._readable.removeListener("readable", readableCallback);
+                    this._readable.removeListener("error", rejectCallback);
+                    this._readable.removeListener("end", rejectCallback);
+                    this._readable.removeListener("close", rejectCallback);
+                    if (options.abortSignal) {
+                        options.abortSignal.removeEventListener("abort", abortHandler);
+                    }
+                };
+                const readableCallback = () => {
+                    const chunk = this._readable.read(size);
+                    if (chunk) {
+                        this._position += chunk.length;
+                        cleanUp();
+                        // chunk.length maybe less than desired size if the stream ends.
+                        resolve(this.toUint8Array(chunk));
+                    }
+                };
+                const rejectCallback = () => {
+                    cleanUp();
+                    reject();
+                };
+                const abortHandler = () => {
+                    cleanUp();
+                    reject(ABORT_ERROR);
+                };
+                this._readable.on("readable", readableCallback);
+                this._readable.once("error", rejectCallback);
+                this._readable.once("end", rejectCallback);
+                this._readable.once("close", rejectCallback);
+                if (options.abortSignal) {
+                    options.abortSignal.addEventListener("abort", abortHandler);
                 }
             });
-        });
-    };
-    return AvroReadableFromStream;
-}(AvroReadable));
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -34273,121 +32519,103 @@ var AvroReadableFromStream = /** @class */ (function (_super) {
  *
  * A Node.js BlobQuickQueryStream will internally parse avro data stream for blob query.
  */
-var BlobQuickQueryStream = /** @class */ (function (_super) {
-    tslib.__extends(BlobQuickQueryStream, _super);
+class BlobQuickQueryStream extends stream.Readable {
     /**
      * Creates an instance of BlobQuickQueryStream.
      *
      * @param source - The current ReadableStream returned from getter
      * @param options -
      */
-    function BlobQuickQueryStream(source, options) {
-        if (options === void 0) { options = {}; }
-        var _this = _super.call(this) || this;
-        _this.avroPaused = true;
-        _this.source = source;
-        _this.onProgress = options.onProgress;
-        _this.onError = options.onError;
-        _this.avroReader = new AvroReader(new AvroReadableFromStream(_this.source));
-        _this.avroIter = _this.avroReader.parseObjects({ abortSignal: options.abortSignal });
-        return _this;
+    constructor(source, options = {}) {
+        super();
+        this.avroPaused = true;
+        this.source = source;
+        this.onProgress = options.onProgress;
+        this.onError = options.onError;
+        this.avroReader = new AvroReader(new AvroReadableFromStream(this.source));
+        this.avroIter = this.avroReader.parseObjects({ abortSignal: options.abortSignal });
     }
-    BlobQuickQueryStream.prototype._read = function () {
-        var _this = this;
+    _read() {
         if (this.avroPaused) {
-            this.readInternal().catch(function (err) {
-                _this.emit("error", err);
+            this.readInternal().catch((err) => {
+                this.emit("error", err);
             });
         }
-    };
-    BlobQuickQueryStream.prototype.readInternal = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var avroNext, obj, schema, data, bytesScanned, totalBytes, fatal, name_1, description, position;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        this.avroPaused = false;
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, this.avroIter.next()];
-                    case 2:
-                        avroNext = _a.sent();
-                        if (avroNext.done) {
-                            return [3 /*break*/, 4];
+    }
+    async readInternal() {
+        this.avroPaused = false;
+        let avroNext;
+        do {
+            avroNext = await this.avroIter.next();
+            if (avroNext.done) {
+                break;
+            }
+            const obj = avroNext.value;
+            const schema = obj.$schema;
+            if (typeof schema !== "string") {
+                throw Error("Missing schema in avro record.");
+            }
+            switch (schema) {
+                case "com.microsoft.azure.storage.queryBlobContents.resultData":
+                    const data = obj.data;
+                    if (data instanceof Uint8Array === false) {
+                        throw Error("Invalid data in avro result record.");
+                    }
+                    if (!this.push(Buffer.from(data))) {
+                        this.avroPaused = true;
+                    }
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.progress":
+                    const bytesScanned = obj.bytesScanned;
+                    if (typeof bytesScanned !== "number") {
+                        throw Error("Invalid bytesScanned in avro progress record.");
+                    }
+                    if (this.onProgress) {
+                        this.onProgress({ loadedBytes: bytesScanned });
+                    }
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.end":
+                    if (this.onProgress) {
+                        const totalBytes = obj.totalBytes;
+                        if (typeof totalBytes !== "number") {
+                            throw Error("Invalid totalBytes in avro end record.");
                         }
-                        obj = avroNext.value;
-                        schema = obj.$schema;
-                        if (typeof schema !== "string") {
-                            throw Error("Missing schema in avro record.");
+                        this.onProgress({ loadedBytes: totalBytes });
+                    }
+                    this.push(null);
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.error":
+                    if (this.onError) {
+                        const fatal = obj.fatal;
+                        if (typeof fatal !== "boolean") {
+                            throw Error("Invalid fatal in avro error record.");
                         }
-                        switch (schema) {
-                            case "com.microsoft.azure.storage.queryBlobContents.resultData":
-                                data = obj.data;
-                                if (data instanceof Uint8Array === false) {
-                                    throw Error("Invalid data in avro result record.");
-                                }
-                                if (!this.push(Buffer.from(data))) {
-                                    this.avroPaused = true;
-                                }
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.progress":
-                                bytesScanned = obj.bytesScanned;
-                                if (typeof bytesScanned !== "number") {
-                                    throw Error("Invalid bytesScanned in avro progress record.");
-                                }
-                                if (this.onProgress) {
-                                    this.onProgress({ loadedBytes: bytesScanned });
-                                }
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.end":
-                                if (this.onProgress) {
-                                    totalBytes = obj.totalBytes;
-                                    if (typeof totalBytes !== "number") {
-                                        throw Error("Invalid totalBytes in avro end record.");
-                                    }
-                                    this.onProgress({ loadedBytes: totalBytes });
-                                }
-                                this.push(null);
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.error":
-                                if (this.onError) {
-                                    fatal = obj.fatal;
-                                    if (typeof fatal !== "boolean") {
-                                        throw Error("Invalid fatal in avro error record.");
-                                    }
-                                    name_1 = obj.name;
-                                    if (typeof name_1 !== "string") {
-                                        throw Error("Invalid name in avro error record.");
-                                    }
-                                    description = obj.description;
-                                    if (typeof description !== "string") {
-                                        throw Error("Invalid description in avro error record.");
-                                    }
-                                    position = obj.position;
-                                    if (typeof position !== "number") {
-                                        throw Error("Invalid position in avro error record.");
-                                    }
-                                    this.onError({
-                                        position: position,
-                                        name: name_1,
-                                        isFatal: fatal,
-                                        description: description
-                                    });
-                                }
-                                break;
-                            default:
-                                throw Error("Unknown schema " + schema + " in avro progress record.");
+                        const name = obj.name;
+                        if (typeof name !== "string") {
+                            throw Error("Invalid name in avro error record.");
                         }
-                        _a.label = 3;
-                    case 3:
-                        if (!avroNext.done && !this.avroPaused) return [3 /*break*/, 1];
-                        _a.label = 4;
-                    case 4: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlobQuickQueryStream;
-}(stream.Readable));
+                        const description = obj.description;
+                        if (typeof description !== "string") {
+                            throw Error("Invalid description in avro error record.");
+                        }
+                        const position = obj.position;
+                        if (typeof position !== "number") {
+                            throw Error("Invalid position in avro error record.");
+                        }
+                        this.onError({
+                            position,
+                            name,
+                            isFatal: fatal,
+                            description
+                        });
+                    }
+                    break;
+                default:
+                    throw Error(`Unknown schema ${schema} in avro progress record.`);
+            }
+        } while (!avroNext.done && !this.avroPaused);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -34396,508 +32624,362 @@ var BlobQuickQueryStream = /** @class */ (function (_super) {
  * BlobQueryResponse implements BlobDownloadResponseModel interface, and in Node.js runtime it will
  * parse avor data returned by blob query.
  */
-var BlobQueryResponse = /** @class */ (function () {
+class BlobQueryResponse {
     /**
      * Creates an instance of BlobQueryResponse.
      *
      * @param originalResponse -
      * @param options -
      */
-    function BlobQueryResponse(originalResponse, options) {
-        if (options === void 0) { options = {}; }
+    constructor(originalResponse, options = {}) {
         this.originalResponse = originalResponse;
         this.blobDownloadStream = new BlobQuickQueryStream(this.originalResponse.readableStreamBody, options);
     }
-    Object.defineProperty(BlobQueryResponse.prototype, "acceptRanges", {
-        /**
-         * Indicates that the service supports
-         * requests for partial file content.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.acceptRanges;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "cacheControl", {
-        /**
-         * Returns if it was previously specified
-         * for the file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.cacheControl;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentDisposition", {
-        /**
-         * Returns the value that was specified
-         * for the 'x-ms-content-disposition' header and specifies how to process the
-         * response.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentDisposition;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentEncoding", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Encoding request header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentEncoding;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentLanguage", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Language request header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentLanguage;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobSequenceNumber", {
-        /**
-         * The current sequence number for a
-         * page blob. This header is not returned for block blobs or append blobs.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobSequenceNumber;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobType", {
-        /**
-         * The blob's type. Possible values include:
-         * 'BlockBlob', 'PageBlob', 'AppendBlob'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentLength", {
-        /**
-         * The number of bytes present in the
-         * response body.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentLength;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentMD5", {
-        /**
-         * If the file has an MD5 hash and the
-         * request is to read the full file, this response header is returned so that
-         * the client can check for message content integrity. If the request is to
-         * read a specified range and the 'x-ms-range-get-content-md5' is set to
-         * true, then the request returns an MD5 hash for the range, as long as the
-         * range size is less than or equal to 4 MB. If neither of these sets of
-         * conditions is true, then no value is returned for the 'Content-MD5'
-         * header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentRange", {
-        /**
-         * Indicates the range of bytes returned if
-         * the client requested a subset of the file by setting the Range request
-         * header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentRange;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentType", {
-        /**
-         * The content type specified for the file.
-         * The default content type is 'application/octet-stream'
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyCompletedOn", {
-        /**
-         * Conclusion time of the last attempted
-         * Copy File operation where this file was the destination file. This value
-         * can specify the time of a completed, aborted, or failed copy attempt.
-         *
-         * @readonly
-         */
-        get: function () {
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyId", {
-        /**
-         * String identifier for the last attempted Copy
-         * File operation where this file was the destination file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyProgress", {
-        /**
-         * Contains the number of bytes copied and
-         * the total bytes in the source in the last attempted Copy File operation
-         * where this file was the destination file. Can show between 0 and
-         * Content-Length bytes copied.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyProgress;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copySource", {
-        /**
-         * URL up to 2KB in length that specifies the
-         * source file used in the last attempted Copy File operation where this file
-         * was the destination file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copySource;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyStatus", {
-        /**
-         * State of the copy operation
-         * identified by 'x-ms-copy-id'. Possible values include: 'pending',
-         * 'success', 'aborted', 'failed'
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyStatusDescription", {
-        /**
-         * Only appears when
-         * x-ms-copy-status is failed or pending. Describes cause of fatal or
-         * non-fatal copy operation failure.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyStatusDescription;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseDuration", {
-        /**
-         * When a blob is leased,
-         * specifies whether the lease is of infinite or fixed duration. Possible
-         * values include: 'infinite', 'fixed'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseDuration;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseState", {
-        /**
-         * Lease state of the blob. Possible
-         * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseState;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseStatus", {
-        /**
-         * The current lease status of the
-         * blob. Possible values include: 'locked', 'unlocked'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "date", {
-        /**
-         * A UTC date/time value generated by the service that
-         * indicates the time at which the response was initiated.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.date;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobCommittedBlockCount", {
-        /**
-         * The number of committed blocks
-         * present in the blob. This header is returned only for append blobs.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobCommittedBlockCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "etag", {
-        /**
-         * The ETag contains a value that you can use to
-         * perform operations conditionally, in quotes.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.etag;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "errorCode", {
-        /**
-         * The error code.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.errorCode;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "isServerEncrypted", {
-        /**
-         * The value of this header is set to
-         * true if the file data and application metadata are completely encrypted
-         * using the specified algorithm. Otherwise, the value is set to false (when
-         * the file is unencrypted, or if only parts of the file/application metadata
-         * are encrypted).
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.isServerEncrypted;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobContentMD5", {
-        /**
-         * If the blob has a MD5 hash, and if
-         * request contains range header (Range or x-ms-range), this response header
-         * is returned with the value of the whole blob's MD5 value. This value may
-         * or may not be equal to the value returned in Content-MD5 header, with the
-         * latter calculated from the requested range.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobContentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "lastModified", {
-        /**
-         * Returns the date and time the file was last
-         * modified. Any operation that modifies the file or its properties updates
-         * the last modified time.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.lastModified;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "metadata", {
-        /**
-         * A name-value pair
-         * to associate with a file storage object.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.metadata;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "requestId", {
-        /**
-         * This header uniquely identifies the request
-         * that was made and can be used for troubleshooting the request.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.requestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "clientRequestId", {
-        /**
-         * If a client request id header is sent in the request, this header will be present in the
-         * response with the same value.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.clientRequestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "version", {
-        /**
-         * Indicates the version of the File service used
-         * to execute the request.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.version;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "encryptionKeySha256", {
-        /**
-         * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
-         * when the blob was encrypted with a customer-provided key.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.encryptionKeySha256;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentCrc64", {
-        /**
-         * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
-         * true, then the request returns a crc64 for the range, as long as the range size is less than
-         * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
-         * specified in the same request, it will fail with 400(Bad Request)
-         */
-        get: function () {
-            return this.originalResponse.contentCrc64;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobBody", {
-        /**
-         * The response body as a browser Blob.
-         * Always undefined in node.js.
-         *
-         * @readonly
-         */
-        get: function () {
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "readableStreamBody", {
-        /**
-         * The response body as a node.js Readable stream.
-         * Always undefined in the browser.
-         *
-         * It will parse avor data returned by blob query.
-         *
-         * @readonly
-         */
-        get: function () {
-            return coreHttp.isNode ? this.blobDownloadStream : undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "_response", {
-        /**
-         * The HTTP response.
-         */
-        get: function () {
-            return this.originalResponse._response;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    return BlobQueryResponse;
-}());
+    /**
+     * Indicates that the service supports
+     * requests for partial file content.
+     *
+     * @readonly
+     */
+    get acceptRanges() {
+        return this.originalResponse.acceptRanges;
+    }
+    /**
+     * Returns if it was previously specified
+     * for the file.
+     *
+     * @readonly
+     */
+    get cacheControl() {
+        return this.originalResponse.cacheControl;
+    }
+    /**
+     * Returns the value that was specified
+     * for the 'x-ms-content-disposition' header and specifies how to process the
+     * response.
+     *
+     * @readonly
+     */
+    get contentDisposition() {
+        return this.originalResponse.contentDisposition;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Encoding request header.
+     *
+     * @readonly
+     */
+    get contentEncoding() {
+        return this.originalResponse.contentEncoding;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Language request header.
+     *
+     * @readonly
+     */
+    get contentLanguage() {
+        return this.originalResponse.contentLanguage;
+    }
+    /**
+     * The current sequence number for a
+     * page blob. This header is not returned for block blobs or append blobs.
+     *
+     * @readonly
+     */
+    get blobSequenceNumber() {
+        return this.originalResponse.blobSequenceNumber;
+    }
+    /**
+     * The blob's type. Possible values include:
+     * 'BlockBlob', 'PageBlob', 'AppendBlob'.
+     *
+     * @readonly
+     */
+    get blobType() {
+        return this.originalResponse.blobType;
+    }
+    /**
+     * The number of bytes present in the
+     * response body.
+     *
+     * @readonly
+     */
+    get contentLength() {
+        return this.originalResponse.contentLength;
+    }
+    /**
+     * If the file has an MD5 hash and the
+     * request is to read the full file, this response header is returned so that
+     * the client can check for message content integrity. If the request is to
+     * read a specified range and the 'x-ms-range-get-content-md5' is set to
+     * true, then the request returns an MD5 hash for the range, as long as the
+     * range size is less than or equal to 4 MB. If neither of these sets of
+     * conditions is true, then no value is returned for the 'Content-MD5'
+     * header.
+     *
+     * @readonly
+     */
+    get contentMD5() {
+        return this.originalResponse.contentMD5;
+    }
+    /**
+     * Indicates the range of bytes returned if
+     * the client requested a subset of the file by setting the Range request
+     * header.
+     *
+     * @readonly
+     */
+    get contentRange() {
+        return this.originalResponse.contentRange;
+    }
+    /**
+     * The content type specified for the file.
+     * The default content type is 'application/octet-stream'
+     *
+     * @readonly
+     */
+    get contentType() {
+        return this.originalResponse.contentType;
+    }
+    /**
+     * Conclusion time of the last attempted
+     * Copy File operation where this file was the destination file. This value
+     * can specify the time of a completed, aborted, or failed copy attempt.
+     *
+     * @readonly
+     */
+    get copyCompletedOn() {
+        return undefined;
+    }
+    /**
+     * String identifier for the last attempted Copy
+     * File operation where this file was the destination file.
+     *
+     * @readonly
+     */
+    get copyId() {
+        return this.originalResponse.copyId;
+    }
+    /**
+     * Contains the number of bytes copied and
+     * the total bytes in the source in the last attempted Copy File operation
+     * where this file was the destination file. Can show between 0 and
+     * Content-Length bytes copied.
+     *
+     * @readonly
+     */
+    get copyProgress() {
+        return this.originalResponse.copyProgress;
+    }
+    /**
+     * URL up to 2KB in length that specifies the
+     * source file used in the last attempted Copy File operation where this file
+     * was the destination file.
+     *
+     * @readonly
+     */
+    get copySource() {
+        return this.originalResponse.copySource;
+    }
+    /**
+     * State of the copy operation
+     * identified by 'x-ms-copy-id'. Possible values include: 'pending',
+     * 'success', 'aborted', 'failed'
+     *
+     * @readonly
+     */
+    get copyStatus() {
+        return this.originalResponse.copyStatus;
+    }
+    /**
+     * Only appears when
+     * x-ms-copy-status is failed or pending. Describes cause of fatal or
+     * non-fatal copy operation failure.
+     *
+     * @readonly
+     */
+    get copyStatusDescription() {
+        return this.originalResponse.copyStatusDescription;
+    }
+    /**
+     * When a blob is leased,
+     * specifies whether the lease is of infinite or fixed duration. Possible
+     * values include: 'infinite', 'fixed'.
+     *
+     * @readonly
+     */
+    get leaseDuration() {
+        return this.originalResponse.leaseDuration;
+    }
+    /**
+     * Lease state of the blob. Possible
+     * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
+     *
+     * @readonly
+     */
+    get leaseState() {
+        return this.originalResponse.leaseState;
+    }
+    /**
+     * The current lease status of the
+     * blob. Possible values include: 'locked', 'unlocked'.
+     *
+     * @readonly
+     */
+    get leaseStatus() {
+        return this.originalResponse.leaseStatus;
+    }
+    /**
+     * A UTC date/time value generated by the service that
+     * indicates the time at which the response was initiated.
+     *
+     * @readonly
+     */
+    get date() {
+        return this.originalResponse.date;
+    }
+    /**
+     * The number of committed blocks
+     * present in the blob. This header is returned only for append blobs.
+     *
+     * @readonly
+     */
+    get blobCommittedBlockCount() {
+        return this.originalResponse.blobCommittedBlockCount;
+    }
+    /**
+     * The ETag contains a value that you can use to
+     * perform operations conditionally, in quotes.
+     *
+     * @readonly
+     */
+    get etag() {
+        return this.originalResponse.etag;
+    }
+    /**
+     * The error code.
+     *
+     * @readonly
+     */
+    get errorCode() {
+        return this.originalResponse.errorCode;
+    }
+    /**
+     * The value of this header is set to
+     * true if the file data and application metadata are completely encrypted
+     * using the specified algorithm. Otherwise, the value is set to false (when
+     * the file is unencrypted, or if only parts of the file/application metadata
+     * are encrypted).
+     *
+     * @readonly
+     */
+    get isServerEncrypted() {
+        return this.originalResponse.isServerEncrypted;
+    }
+    /**
+     * If the blob has a MD5 hash, and if
+     * request contains range header (Range or x-ms-range), this response header
+     * is returned with the value of the whole blob's MD5 value. This value may
+     * or may not be equal to the value returned in Content-MD5 header, with the
+     * latter calculated from the requested range.
+     *
+     * @readonly
+     */
+    get blobContentMD5() {
+        return this.originalResponse.blobContentMD5;
+    }
+    /**
+     * Returns the date and time the file was last
+     * modified. Any operation that modifies the file or its properties updates
+     * the last modified time.
+     *
+     * @readonly
+     */
+    get lastModified() {
+        return this.originalResponse.lastModified;
+    }
+    /**
+     * A name-value pair
+     * to associate with a file storage object.
+     *
+     * @readonly
+     */
+    get metadata() {
+        return this.originalResponse.metadata;
+    }
+    /**
+     * This header uniquely identifies the request
+     * that was made and can be used for troubleshooting the request.
+     *
+     * @readonly
+     */
+    get requestId() {
+        return this.originalResponse.requestId;
+    }
+    /**
+     * If a client request id header is sent in the request, this header will be present in the
+     * response with the same value.
+     *
+     * @readonly
+     */
+    get clientRequestId() {
+        return this.originalResponse.clientRequestId;
+    }
+    /**
+     * Indicates the version of the File service used
+     * to execute the request.
+     *
+     * @readonly
+     */
+    get version() {
+        return this.originalResponse.version;
+    }
+    /**
+     * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
+     * when the blob was encrypted with a customer-provided key.
+     *
+     * @readonly
+     */
+    get encryptionKeySha256() {
+        return this.originalResponse.encryptionKeySha256;
+    }
+    /**
+     * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
+     * true, then the request returns a crc64 for the range, as long as the range size is less than
+     * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
+     * specified in the same request, it will fail with 400(Bad Request)
+     */
+    get contentCrc64() {
+        return this.originalResponse.contentCrc64;
+    }
+    /**
+     * The response body as a browser Blob.
+     * Always undefined in node.js.
+     *
+     * @readonly
+     */
+    get blobBody() {
+        return undefined;
+    }
+    /**
+     * The response body as a node.js Readable stream.
+     * Always undefined in the browser.
+     *
+     * It will parse avor data returned by blob query.
+     *
+     * @readonly
+     */
+    get readableStreamBody() {
+        return coreHttp.isNode ? this.blobDownloadStream : undefined;
+    }
+    /**
+     * The HTTP response.
+     */
+    get _response() {
+        return this.originalResponse._response;
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 (function (BlockBlobTier) {
@@ -34977,6 +33059,7 @@ function ensureCpkIfSpecified(cpk, isHttps) {
 }
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Function that converts PageRange and ClearRange to a common Range object.
  * PageRange and ClearRange have start and end while Range offset and count
@@ -34984,18 +33067,18 @@ function ensureCpkIfSpecified(cpk, isHttps) {
  * @param response - Model PageBlob Range response
  */
 function rangeResponseFromModel(response) {
-    var pageRange = (response._response.parsedBody.pageRange || []).map(function (x) { return ({
+    const pageRange = (response._response.parsedBody.pageRange || []).map((x) => ({
         offset: x.start,
         count: x.end - x.start
-    }); });
-    var clearRange = (response._response.parsedBody.clearRange || []).map(function (x) { return ({
+    }));
+    const clearRange = (response._response.parsedBody.clearRange || []).map((x) => ({
         offset: x.start,
         count: x.end - x.start
-    }); });
-    return tslib.__assign(tslib.__assign({}, response), { pageRange: pageRange,
-        clearRange: clearRange, _response: tslib.__assign(tslib.__assign({}, response._response), { parsedBody: {
-                pageRange: pageRange,
-                clearRange: clearRange
+    }));
+    return Object.assign(Object.assign({}, response), { pageRange,
+        clearRange, _response: Object.assign(Object.assign({}, response._response), { parsedBody: {
+                pageRange,
+                clearRange
             } }) });
 }
 
@@ -35006,64 +33089,48 @@ function rangeResponseFromModel(response) {
  *
  * @hidden
  */
-var BlobBeginCopyFromUrlPoller = /** @class */ (function (_super) {
-    tslib.__extends(BlobBeginCopyFromUrlPoller, _super);
-    function BlobBeginCopyFromUrlPoller(options) {
-        var _this = this;
-        var blobClient = options.blobClient, copySource = options.copySource, _a = options.intervalInMs, intervalInMs = _a === void 0 ? 15000 : _a, onProgress = options.onProgress, resumeFrom = options.resumeFrom, startCopyFromURLOptions = options.startCopyFromURLOptions;
-        var state;
+class BlobBeginCopyFromUrlPoller extends coreLro.Poller {
+    constructor(options) {
+        const { blobClient, copySource, intervalInMs = 15000, onProgress, resumeFrom, startCopyFromURLOptions } = options;
+        let state;
         if (resumeFrom) {
             state = JSON.parse(resumeFrom).state;
         }
-        var operation = makeBlobBeginCopyFromURLPollOperation(tslib.__assign(tslib.__assign({}, state), { blobClient: blobClient,
-            copySource: copySource,
-            startCopyFromURLOptions: startCopyFromURLOptions }));
-        _this = _super.call(this, operation) || this;
+        const operation = makeBlobBeginCopyFromURLPollOperation(Object.assign(Object.assign({}, state), { blobClient,
+            copySource,
+            startCopyFromURLOptions }));
+        super(operation);
         if (typeof onProgress === "function") {
-            _this.onProgress(onProgress);
+            this.onProgress(onProgress);
         }
-        _this.intervalInMs = intervalInMs;
-        return _this;
+        this.intervalInMs = intervalInMs;
     }
-    BlobBeginCopyFromUrlPoller.prototype.delay = function () {
+    delay() {
         return coreHttp.delay(this.intervalInMs);
-    };
-    return BlobBeginCopyFromUrlPoller;
-}(coreLro.Poller));
+    }
+}
 /**
  * Note: Intentionally using function expression over arrow function expression
  * so that the function can be invoked with a different context.
  * This affects what `this` refers to.
  * @hidden
  */
-var cancel = function cancel(options) {
-    if (options === void 0) { options = {}; }
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var state, copyId;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    state = this.state;
-                    copyId = state.copyId;
-                    if (state.isCompleted) {
-                        return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-                    }
-                    if (!copyId) {
-                        state.isCancelled = true;
-                        return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-                    }
-                    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
-                    return [4 /*yield*/, state.blobClient.abortCopyFromURL(copyId, {
-                            abortSignal: options.abortSignal
-                        })];
-                case 1:
-                    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
-                    _a.sent();
-                    state.isCancelled = true;
-                    return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-            }
-        });
+const cancel = async function cancel(options = {}) {
+    const state = this.state;
+    const { copyId } = state;
+    if (state.isCompleted) {
+        return makeBlobBeginCopyFromURLPollOperation(state);
+    }
+    if (!copyId) {
+        state.isCancelled = true;
+        return makeBlobBeginCopyFromURLPollOperation(state);
+    }
+    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
+    await state.blobClient.abortCopyFromURL(copyId, {
+        abortSignal: options.abortSignal
     });
+    state.isCancelled = true;
+    return makeBlobBeginCopyFromURLPollOperation(state);
 };
 /**
  * Note: Intentionally using function expression over arrow function expression
@@ -35071,64 +33138,48 @@ var cancel = function cancel(options) {
  * This affects what `this` refers to.
  * @hidden
  */
-var update = function update(options) {
-    if (options === void 0) { options = {}; }
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var state, blobClient, copySource, startCopyFromURLOptions, result, result, copyStatus, copyProgress, prevCopyProgress, err_1;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    state = this.state;
-                    blobClient = state.blobClient, copySource = state.copySource, startCopyFromURLOptions = state.startCopyFromURLOptions;
-                    if (!!state.isStarted) return [3 /*break*/, 2];
-                    state.isStarted = true;
-                    return [4 /*yield*/, blobClient.startCopyFromURL(copySource, startCopyFromURLOptions)];
-                case 1:
-                    result = _a.sent();
-                    // copyId is needed to abort
-                    state.copyId = result.copyId;
-                    if (result.copyStatus === "success") {
-                        state.result = result;
-                        state.isCompleted = true;
-                    }
-                    return [3 /*break*/, 6];
-                case 2:
-                    if (!!state.isCompleted) return [3 /*break*/, 6];
-                    _a.label = 3;
-                case 3:
-                    _a.trys.push([3, 5, , 6]);
-                    return [4 /*yield*/, state.blobClient.getProperties({ abortSignal: options.abortSignal })];
-                case 4:
-                    result = _a.sent();
-                    copyStatus = result.copyStatus, copyProgress = result.copyProgress;
-                    prevCopyProgress = state.copyProgress;
-                    if (copyProgress) {
-                        state.copyProgress = copyProgress;
-                    }
-                    if (copyStatus === "pending" &&
-                        copyProgress !== prevCopyProgress &&
-                        typeof options.fireProgress === "function") {
-                        // trigger in setTimeout, or swallow error?
-                        options.fireProgress(state);
-                    }
-                    else if (copyStatus === "success") {
-                        state.result = result;
-                        state.isCompleted = true;
-                    }
-                    else if (copyStatus === "failed") {
-                        state.error = new Error("Blob copy failed with reason: \"" + (result.copyStatusDescription || "unknown") + "\"");
-                        state.isCompleted = true;
-                    }
-                    return [3 /*break*/, 6];
-                case 5:
-                    err_1 = _a.sent();
-                    state.error = err_1;
-                    state.isCompleted = true;
-                    return [3 /*break*/, 6];
-                case 6: return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
+const update = async function update(options = {}) {
+    const state = this.state;
+    const { blobClient, copySource, startCopyFromURLOptions } = state;
+    if (!state.isStarted) {
+        state.isStarted = true;
+        const result = await blobClient.startCopyFromURL(copySource, startCopyFromURLOptions);
+        // copyId is needed to abort
+        state.copyId = result.copyId;
+        if (result.copyStatus === "success") {
+            state.result = result;
+            state.isCompleted = true;
+        }
+    }
+    else if (!state.isCompleted) {
+        try {
+            const result = await state.blobClient.getProperties({ abortSignal: options.abortSignal });
+            const { copyStatus, copyProgress } = result;
+            const prevCopyProgress = state.copyProgress;
+            if (copyProgress) {
+                state.copyProgress = copyProgress;
             }
-        });
-    });
+            if (copyStatus === "pending" &&
+                copyProgress !== prevCopyProgress &&
+                typeof options.fireProgress === "function") {
+                // trigger in setTimeout, or swallow error?
+                options.fireProgress(state);
+            }
+            else if (copyStatus === "success") {
+                state.result = result;
+                state.isCompleted = true;
+            }
+            else if (copyStatus === "failed") {
+                state.error = new Error(`Blob copy failed with reason: "${result.copyStatusDescription || "unknown"}"`);
+                state.isCompleted = true;
+            }
+        }
+        catch (err) {
+            state.error = err;
+            state.isCompleted = true;
+        }
+    }
+    return makeBlobBeginCopyFromURLPollOperation(state);
 };
 /**
  * Note: Intentionally using function expression over arrow function expression
@@ -35136,8 +33187,8 @@ var update = function update(options) {
  * This affects what `this` refers to.
  * @hidden
  */
-var toString = function toString() {
-    return JSON.stringify({ state: this.state }, function (key, value) {
+const toString = function toString() {
+    return JSON.stringify({ state: this.state }, (key, value) => {
         // remove blobClient from serialized state since a client can't be hydrated from this info.
         if (key === "blobClient") {
             return undefined;
@@ -35151,10 +33202,10 @@ var toString = function toString() {
  */
 function makeBlobBeginCopyFromURLPollOperation(state) {
     return {
-        state: tslib.__assign({}, state),
-        cancel: cancel,
-        toString: toString,
-        update: update
+        state: Object.assign({}, state),
+        cancel,
+        toString,
+        update
     };
 }
 
@@ -35169,14 +33220,14 @@ function makeBlobBeginCopyFromURLPollOperation(state) {
  */
 function rangeToString(iRange) {
     if (iRange.offset < 0) {
-        throw new RangeError("Range.offset cannot be smaller than 0.");
+        throw new RangeError(`Range.offset cannot be smaller than 0.`);
     }
     if (iRange.count && iRange.count <= 0) {
-        throw new RangeError("Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.");
+        throw new RangeError(`Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.`);
     }
     return iRange.count
-        ? "bytes=" + iRange.offset + "-" + (iRange.offset + iRange.count - 1)
-        : "bytes=" + iRange.offset + "-";
+        ? `bytes=${iRange.offset}-${iRange.offset + iRange.count - 1}`
+        : `bytes=${iRange.offset}-`;
 }
 
 // Copyright (c) Microsoft Corporation.
@@ -35193,13 +33244,12 @@ var BatchStates;
  * Will stop execute left operations when one of the executed operation throws an error.
  * But Batch cannot cancel ongoing operations, you need to cancel them by yourself.
  */
-var Batch = /** @class */ (function () {
+class Batch {
     /**
      * Creates an instance of Batch.
      * @param concurrency -
      */
-    function Batch(concurrency) {
-        if (concurrency === void 0) { concurrency = 5; }
+    constructor(concurrency = 5) {
         /**
          * Number of active operations under execution.
          */
@@ -35232,69 +33282,53 @@ var Batch = /** @class */ (function () {
      *
      * @param operation -
      */
-    Batch.prototype.addOperation = function (operation) {
-        var _this = this;
-        this.operations.push(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-            var error_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        _a.trys.push([0, 2, , 3]);
-                        this.actives++;
-                        return [4 /*yield*/, operation()];
-                    case 1:
-                        _a.sent();
-                        this.actives--;
-                        this.completed++;
-                        this.parallelExecute();
-                        return [3 /*break*/, 3];
-                    case 2:
-                        error_1 = _a.sent();
-                        this.emitter.emit("error", error_1);
-                        return [3 /*break*/, 3];
-                    case 3: return [2 /*return*/];
-                }
-            });
-        }); });
-    };
+    addOperation(operation) {
+        this.operations.push(async () => {
+            try {
+                this.actives++;
+                await operation();
+                this.actives--;
+                this.completed++;
+                this.parallelExecute();
+            }
+            catch (error) {
+                this.emitter.emit("error", error);
+            }
+        });
+    }
     /**
      * Start execute operations in the queue.
      *
      */
-    Batch.prototype.do = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                if (this.operations.length === 0) {
-                    return [2 /*return*/, Promise.resolve()];
-                }
-                this.parallelExecute();
-                return [2 /*return*/, new Promise(function (resolve, reject) {
-                        _this.emitter.on("finish", resolve);
-                        _this.emitter.on("error", function (error) {
-                            _this.state = BatchStates.Error;
-                            reject(error);
-                        });
-                    })];
+    async do() {
+        if (this.operations.length === 0) {
+            return Promise.resolve();
+        }
+        this.parallelExecute();
+        return new Promise((resolve, reject) => {
+            this.emitter.on("finish", resolve);
+            this.emitter.on("error", (error) => {
+                this.state = BatchStates.Error;
+                reject(error);
             });
         });
-    };
+    }
     /**
      * Get next operation to be executed. Return null when reaching ends.
      *
      */
-    Batch.prototype.nextOperation = function () {
+    nextOperation() {
         if (this.offset < this.operations.length) {
             return this.operations[this.offset++];
         }
         return null;
-    };
+    }
     /**
      * Start execute operations. One one the most important difference between
      * this method with do() is that do() wraps as an sync method.
      *
      */
-    Batch.prototype.parallelExecute = function () {
+    parallelExecute() {
         if (this.state === BatchStates.Error) {
             return;
         }
@@ -35303,7 +33337,7 @@ var Batch = /** @class */ (function () {
             return;
         }
         while (this.actives < this.concurrency) {
-            var operation = this.nextOperation();
+            const operation = this.nextOperation();
             if (operation) {
                 operation();
             }
@@ -35311,16 +33345,14 @@ var Batch = /** @class */ (function () {
                 return;
             }
         }
-    };
-    return Batch;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * This class generates a readable stream from the data in an array of buffers.
  */
-var BuffersStream = /** @class */ (function (_super) {
-    tslib.__extends(BuffersStream, _super);
+class BuffersStream extends stream.Readable {
     /**
      * Creates an instance of BuffersStream that will emit the data
      * contained in the array of buffers.
@@ -35328,46 +33360,44 @@ var BuffersStream = /** @class */ (function (_super) {
      * @param buffers - Array of buffers containing the data
      * @param byteLength - The total length of data contained in the buffers
      */
-    function BuffersStream(buffers, byteLength, options) {
-        var _this = _super.call(this, options) || this;
-        _this.buffers = buffers;
-        _this.byteLength = byteLength;
-        _this.byteOffsetInCurrentBuffer = 0;
-        _this.bufferIndex = 0;
-        _this.pushedBytesLength = 0;
+    constructor(buffers, byteLength, options) {
+        super(options);
+        this.buffers = buffers;
+        this.byteLength = byteLength;
+        this.byteOffsetInCurrentBuffer = 0;
+        this.bufferIndex = 0;
+        this.pushedBytesLength = 0;
         // check byteLength is no larger than buffers[] total length
-        var buffersLength = 0;
-        for (var _i = 0, _a = _this.buffers; _i < _a.length; _i++) {
-            var buf = _a[_i];
+        let buffersLength = 0;
+        for (const buf of this.buffers) {
             buffersLength += buf.byteLength;
         }
-        if (buffersLength < _this.byteLength) {
+        if (buffersLength < this.byteLength) {
             throw new Error("Data size shouldn't be larger than the total length of buffers.");
         }
-        return _this;
     }
     /**
      * Internal _read() that will be called when the stream wants to pull more data in.
      *
      * @param size - Optional. The size of data to be read
      */
-    BuffersStream.prototype._read = function (size) {
+    _read(size) {
         if (this.pushedBytesLength >= this.byteLength) {
             this.push(null);
         }
         if (!size) {
             size = this.readableHighWaterMark;
         }
-        var outBuffers = [];
-        var i = 0;
+        const outBuffers = [];
+        let i = 0;
         while (i < size && this.pushedBytesLength < this.byteLength) {
             // The last buffer may be longer than the data it contains.
-            var remainingDataInAllBuffers = this.byteLength - this.pushedBytesLength;
-            var remainingCapacityInThisBuffer = this.buffers[this.bufferIndex].byteLength - this.byteOffsetInCurrentBuffer;
-            var remaining = Math.min(remainingCapacityInThisBuffer, remainingDataInAllBuffers);
+            const remainingDataInAllBuffers = this.byteLength - this.pushedBytesLength;
+            const remainingCapacityInThisBuffer = this.buffers[this.bufferIndex].byteLength - this.byteOffsetInCurrentBuffer;
+            const remaining = Math.min(remainingCapacityInThisBuffer, remainingDataInAllBuffers);
             if (remaining > size - i) {
                 // chunkSize = size - i
-                var end = this.byteOffsetInCurrentBuffer + size - i;
+                const end = this.byteOffsetInCurrentBuffer + size - i;
                 outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
                 this.pushedBytesLength += size - i;
                 this.byteOffsetInCurrentBuffer = end;
@@ -35376,7 +33406,7 @@ var BuffersStream = /** @class */ (function (_super) {
             }
             else {
                 // chunkSize = remaining
-                var end = this.byteOffsetInCurrentBuffer + remaining;
+                const end = this.byteOffsetInCurrentBuffer + remaining;
                 outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
                 if (remaining === remainingCapacityInThisBuffer) {
                     // this.buffers[this.bufferIndex] used up, shift to next one
@@ -35396,16 +33426,15 @@ var BuffersStream = /** @class */ (function (_super) {
         else if (outBuffers.length === 1) {
             this.push(outBuffers[0]);
         }
-    };
-    return BuffersStream;
-}(stream.Readable));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * maxBufferLength is max size of each buffer in the pooled buffers.
  */
 // Can't use import as Typescript doesn't recognize "buffer".
-var maxBufferLength = __webpack_require__(407).constants.MAX_LENGTH;
+const maxBufferLength = __webpack_require__(407).constants.MAX_LENGTH;
 /**
  * This class provides a buffer container which conceptually has no hard size limit.
  * It accepts a capacity, an array of input buffers and the total length of input data.
@@ -35414,8 +33443,8 @@ var maxBufferLength = __webpack_require__(407).constants.MAX_LENGTH;
  * Then by calling PooledBuffer.getReadableStream(), you can get a readable stream
  * assembled from all the data in the internal "buffer".
  */
-var PooledBuffer = /** @class */ (function () {
-    function PooledBuffer(capacity, buffers, totalLength) {
+class PooledBuffer {
+    constructor(capacity, buffers, totalLength) {
         /**
          * Internal buffers used to keep the data.
          * Each buffer has a length of the maxBufferLength except last one.
@@ -35424,9 +33453,9 @@ var PooledBuffer = /** @class */ (function () {
         this.capacity = capacity;
         this._size = 0;
         // allocate
-        var bufferNum = Math.ceil(capacity / maxBufferLength);
-        for (var i = 0; i < bufferNum; i++) {
-            var len = i === bufferNum - 1 ? capacity % maxBufferLength : maxBufferLength;
+        const bufferNum = Math.ceil(capacity / maxBufferLength);
+        for (let i = 0; i < bufferNum; i++) {
+            let len = i === bufferNum - 1 ? capacity % maxBufferLength : maxBufferLength;
             if (len === 0) {
                 len = maxBufferLength;
             }
@@ -35436,16 +33465,12 @@ var PooledBuffer = /** @class */ (function () {
             this.fill(buffers, totalLength);
         }
     }
-    Object.defineProperty(PooledBuffer.prototype, "size", {
-        /**
-         * The size of the data contained in the pooled buffers.
-         */
-        get: function () {
-            return this._size;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * The size of the data contained in the pooled buffers.
+     */
+    get size() {
+        return this._size;
+    }
     /**
      * Fill the internal buffers with data in the input buffers serially
      * with respect to the total length and the total capacity of the internal buffers.
@@ -35455,13 +33480,13 @@ var PooledBuffer = /** @class */ (function () {
      * @param totalLength - Total length of the data to be filled in.
      *
      */
-    PooledBuffer.prototype.fill = function (buffers, totalLength) {
+    fill(buffers, totalLength) {
         this._size = Math.min(this.capacity, totalLength);
-        var i = 0, j = 0, targetOffset = 0, sourceOffset = 0, totalCopiedNum = 0;
+        let i = 0, j = 0, targetOffset = 0, sourceOffset = 0, totalCopiedNum = 0;
         while (totalCopiedNum < this._size) {
-            var source = buffers[i];
-            var target = this.buffers[j];
-            var copiedNum = source.copy(target, targetOffset, sourceOffset);
+            const source = buffers[i];
+            const target = this.buffers[j];
+            const copiedNum = source.copy(target, targetOffset, sourceOffset);
             totalCopiedNum += copiedNum;
             sourceOffset += copiedNum;
             targetOffset += copiedNum;
@@ -35479,16 +33504,15 @@ var PooledBuffer = /** @class */ (function () {
         if (buffers.length > 0) {
             buffers[0] = buffers[0].slice(sourceOffset);
         }
-    };
+    }
     /**
      * Get the readable stream assembled from all the data in the internal buffers.
      *
      */
-    PooledBuffer.prototype.getReadableStream = function () {
+    getReadableStream() {
         return new BuffersStream(this.buffers, this.size);
-    };
-    return PooledBuffer;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -35513,7 +33537,7 @@ var PooledBuffer = /** @class */ (function () {
  *    in this situation, outgoing handlers are blocked.
  *    Outgoing queue shouldn't be empty.
  */
-var BufferScheduler = /** @class */ (function () {
+class BufferScheduler {
     /**
      * Creates an instance of BufferScheduler.
      *
@@ -35526,7 +33550,7 @@ var BufferScheduler = /** @class */ (function () {
      * @param concurrency - Concurrency of executing outgoingHandlers (>0)
      * @param encoding - [Optional] Encoding of Readable stream when it's a string stream
      */
-    function BufferScheduler(readable, bufferSize, maxBuffers, outgoingHandler, concurrency, encoding) {
+    constructor(readable, bufferSize, maxBuffers, outgoingHandler, concurrency, encoding) {
         /**
          * An internal event emitter.
          */
@@ -35572,13 +33596,13 @@ var BufferScheduler = /** @class */ (function () {
          */
         this.outgoing = [];
         if (bufferSize <= 0) {
-            throw new RangeError("bufferSize must be larger than 0, current is " + bufferSize);
+            throw new RangeError(`bufferSize must be larger than 0, current is ${bufferSize}`);
         }
         if (maxBuffers <= 0) {
-            throw new RangeError("maxBuffers must be larger than 0, current is " + maxBuffers);
+            throw new RangeError(`maxBuffers must be larger than 0, current is ${maxBuffers}`);
         }
         if (concurrency <= 0) {
-            throw new RangeError("concurrency must be larger than 0, current is " + concurrency);
+            throw new RangeError(`concurrency must be larger than 0, current is ${concurrency}`);
         }
         this.bufferSize = bufferSize;
         this.maxBuffers = maxBuffers;
@@ -35592,69 +33616,64 @@ var BufferScheduler = /** @class */ (function () {
      * returns error.
      *
      */
-    BufferScheduler.prototype.do = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve, reject) {
-                        _this.readable.on("data", function (data) {
-                            data = typeof data === "string" ? Buffer.from(data, _this.encoding) : data;
-                            _this.appendUnresolvedData(data);
-                            if (!_this.resolveData()) {
-                                _this.readable.pause();
-                            }
-                        });
-                        _this.readable.on("error", function (err) {
-                            _this.emitter.emit("error", err);
-                        });
-                        _this.readable.on("end", function () {
-                            _this.isStreamEnd = true;
-                            _this.emitter.emit("checkEnd");
-                        });
-                        _this.emitter.on("error", function (err) {
-                            _this.isError = true;
-                            _this.readable.pause();
-                            reject(err);
-                        });
-                        _this.emitter.on("checkEnd", function () {
-                            if (_this.outgoing.length > 0) {
-                                _this.triggerOutgoingHandlers();
-                                return;
-                            }
-                            if (_this.isStreamEnd && _this.executingOutgoingHandlers === 0) {
-                                if (_this.unresolvedLength > 0 && _this.unresolvedLength < _this.bufferSize) {
-                                    var buffer_1 = _this.shiftBufferFromUnresolvedDataArray();
-                                    _this.outgoingHandler(function () { return buffer_1.getReadableStream(); }, buffer_1.size, _this.offset)
-                                        .then(resolve)
-                                        .catch(reject);
-                                }
-                                else if (_this.unresolvedLength >= _this.bufferSize) {
-                                    return;
-                                }
-                                else {
-                                    resolve();
-                                }
-                            }
-                        });
-                    })];
+    async do() {
+        return new Promise((resolve, reject) => {
+            this.readable.on("data", (data) => {
+                data = typeof data === "string" ? Buffer.from(data, this.encoding) : data;
+                this.appendUnresolvedData(data);
+                if (!this.resolveData()) {
+                    this.readable.pause();
+                }
+            });
+            this.readable.on("error", (err) => {
+                this.emitter.emit("error", err);
+            });
+            this.readable.on("end", () => {
+                this.isStreamEnd = true;
+                this.emitter.emit("checkEnd");
+            });
+            this.emitter.on("error", (err) => {
+                this.isError = true;
+                this.readable.pause();
+                reject(err);
+            });
+            this.emitter.on("checkEnd", () => {
+                if (this.outgoing.length > 0) {
+                    this.triggerOutgoingHandlers();
+                    return;
+                }
+                if (this.isStreamEnd && this.executingOutgoingHandlers === 0) {
+                    if (this.unresolvedLength > 0 && this.unresolvedLength < this.bufferSize) {
+                        const buffer = this.shiftBufferFromUnresolvedDataArray();
+                        this.outgoingHandler(() => buffer.getReadableStream(), buffer.size, this.offset)
+                            .then(resolve)
+                            .catch(reject);
+                    }
+                    else if (this.unresolvedLength >= this.bufferSize) {
+                        return;
+                    }
+                    else {
+                        resolve();
+                    }
+                }
             });
         });
-    };
+    }
     /**
      * Insert a new data into unresolved array.
      *
      * @param data -
      */
-    BufferScheduler.prototype.appendUnresolvedData = function (data) {
+    appendUnresolvedData(data) {
         this.unresolvedDataArray.push(data);
         this.unresolvedLength += data.length;
-    };
+    }
     /**
      * Try to shift a buffer with size in blockSize. The buffer returned may be less
      * than blockSize when data in unresolvedDataArray is less than bufferSize.
      *
      */
-    BufferScheduler.prototype.shiftBufferFromUnresolvedDataArray = function (buffer) {
+    shiftBufferFromUnresolvedDataArray(buffer) {
         if (!buffer) {
             buffer = new PooledBuffer(this.bufferSize, this.unresolvedDataArray, this.unresolvedLength);
         }
@@ -35663,7 +33682,7 @@ var BufferScheduler = /** @class */ (function () {
         }
         this.unresolvedLength -= buffer.size;
         return buffer;
-    };
+    }
     /**
      * Resolve data in unresolvedDataArray. For every buffer with size in blockSize
      * shifted, it will try to get (or allocate a buffer) from incoming, and fill it,
@@ -35673,9 +33692,9 @@ var BufferScheduler = /** @class */ (function () {
      *
      * @returns Return false when buffers in incoming are not enough, else true.
      */
-    BufferScheduler.prototype.resolveData = function () {
+    resolveData() {
         while (this.unresolvedLength >= this.bufferSize) {
-            var buffer = void 0;
+            let buffer;
             if (this.incoming.length > 0) {
                 buffer = this.incoming.shift();
                 this.shiftBufferFromUnresolvedDataArray(buffer);
@@ -35694,75 +33713,55 @@ var BufferScheduler = /** @class */ (function () {
             this.triggerOutgoingHandlers();
         }
         return true;
-    };
+    }
     /**
      * Try to trigger a outgoing handler for every buffer in outgoing. Stop when
      * concurrency reaches.
      */
-    BufferScheduler.prototype.triggerOutgoingHandlers = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buffer;
-            return tslib.__generator(this, function (_a) {
-                do {
-                    if (this.executingOutgoingHandlers >= this.concurrency) {
-                        return [2 /*return*/];
-                    }
-                    buffer = this.outgoing.shift();
-                    if (buffer) {
-                        this.triggerOutgoingHandler(buffer);
-                    }
-                } while (buffer);
-                return [2 /*return*/];
-            });
-        });
-    };
+    async triggerOutgoingHandlers() {
+        let buffer;
+        do {
+            if (this.executingOutgoingHandlers >= this.concurrency) {
+                return;
+            }
+            buffer = this.outgoing.shift();
+            if (buffer) {
+                this.triggerOutgoingHandler(buffer);
+            }
+        } while (buffer);
+    }
     /**
      * Trigger a outgoing handler for a buffer shifted from outgoing.
      *
      * @param buffer -
      */
-    BufferScheduler.prototype.triggerOutgoingHandler = function (buffer) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var bufferLength, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        bufferLength = buffer.size;
-                        this.executingOutgoingHandlers++;
-                        this.offset += bufferLength;
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        return [4 /*yield*/, this.outgoingHandler(function () { return buffer.getReadableStream(); }, bufferLength, this.offset - bufferLength)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 4];
-                    case 3:
-                        err_1 = _a.sent();
-                        this.emitter.emit("error", err_1);
-                        return [2 /*return*/];
-                    case 4:
-                        this.executingOutgoingHandlers--;
-                        this.reuseBuffer(buffer);
-                        this.emitter.emit("checkEnd");
-                        return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async triggerOutgoingHandler(buffer) {
+        const bufferLength = buffer.size;
+        this.executingOutgoingHandlers++;
+        this.offset += bufferLength;
+        try {
+            await this.outgoingHandler(() => buffer.getReadableStream(), bufferLength, this.offset - bufferLength);
+        }
+        catch (err) {
+            this.emitter.emit("error", err);
+            return;
+        }
+        this.executingOutgoingHandlers--;
+        this.reuseBuffer(buffer);
+        this.emitter.emit("checkEnd");
+    }
     /**
      * Return buffer used by outgoing handler into incoming.
      *
      * @param buffer -
      */
-    BufferScheduler.prototype.reuseBuffer = function (buffer) {
+    reuseBuffer(buffer) {
         this.incoming.push(buffer);
         if (!this.isError && this.resolveData() && !this.isStreamEnd) {
             this.readable.resume();
         }
-    };
-    return BufferScheduler;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -35774,39 +33773,34 @@ var BufferScheduler = /** @class */ (function () {
  * @param end - To which position in the buffer to be filled, exclusive
  * @param encoding - Encoding of the Readable stream
  */
-function streamToBuffer(stream, buffer, offset, end, encoding) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var pos, count;
-        return tslib.__generator(this, function (_a) {
-            pos = 0;
-            count = end - offset;
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    stream.on("readable", function () {
-                        if (pos >= count) {
-                            resolve();
-                            return;
-                        }
-                        var chunk = stream.read();
-                        if (!chunk) {
-                            return;
-                        }
-                        if (typeof chunk === "string") {
-                            chunk = Buffer.from(chunk, encoding);
-                        }
-                        // How much data needed in this chunk
-                        var chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
-                        buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
-                        pos += chunkLength;
-                    });
-                    stream.on("end", function () {
-                        if (pos < count) {
-                            reject(new Error("Stream drains before getting enough data needed. Data read: " + pos + ", data need: " + count));
-                        }
-                        resolve();
-                    });
-                    stream.on("error", reject);
-                })];
+async function streamToBuffer(stream, buffer, offset, end, encoding) {
+    let pos = 0; // Position in stream
+    const count = end - offset; // Total amount of data needed in stream
+    return new Promise((resolve, reject) => {
+        stream.on("readable", () => {
+            if (pos >= count) {
+                resolve();
+                return;
+            }
+            let chunk = stream.read();
+            if (!chunk) {
+                return;
+            }
+            if (typeof chunk === "string") {
+                chunk = Buffer.from(chunk, encoding);
+            }
+            // How much data needed in this chunk
+            const chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
+            buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
+            pos += chunkLength;
         });
+        stream.on("end", () => {
+            if (pos < count) {
+                reject(new Error(`Stream drains before getting enough data needed. Data read: ${pos}, data need: ${count}`));
+            }
+            resolve();
+        });
+        stream.on("error", reject);
     });
 }
 /**
@@ -35818,34 +33812,29 @@ function streamToBuffer(stream, buffer, offset, end, encoding) {
  * @returns with the count of bytes read.
  * @throws `RangeError` If buffer size is not big enough.
  */
-function streamToBuffer2(stream, buffer, encoding) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var pos, bufferSize;
-        return tslib.__generator(this, function (_a) {
-            pos = 0;
-            bufferSize = buffer.length;
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    stream.on("readable", function () {
-                        var chunk = stream.read();
-                        if (!chunk) {
-                            return;
-                        }
-                        if (typeof chunk === "string") {
-                            chunk = Buffer.from(chunk, encoding);
-                        }
-                        if (pos + chunk.length > bufferSize) {
-                            reject(new Error("Stream exceeds buffer size. Buffer size: " + bufferSize));
-                            return;
-                        }
-                        buffer.fill(chunk, pos, pos + chunk.length);
-                        pos += chunk.length;
-                    });
-                    stream.on("end", function () {
-                        resolve(pos);
-                    });
-                    stream.on("error", reject);
-                })];
+async function streamToBuffer2(stream, buffer, encoding) {
+    let pos = 0; // Position in stream
+    const bufferSize = buffer.length;
+    return new Promise((resolve, reject) => {
+        stream.on("readable", () => {
+            let chunk = stream.read();
+            if (!chunk) {
+                return;
+            }
+            if (typeof chunk === "string") {
+                chunk = Buffer.from(chunk, encoding);
+            }
+            if (pos + chunk.length > bufferSize) {
+                reject(new Error(`Stream exceeds buffer size. Buffer size: ${bufferSize}`));
+                return;
+            }
+            buffer.fill(chunk, pos, pos + chunk.length);
+            pos += chunk.length;
         });
+        stream.on("end", () => {
+            resolve(pos);
+        });
+        stream.on("error", reject);
     });
 }
 /**
@@ -35856,21 +33845,17 @@ function streamToBuffer2(stream, buffer, encoding) {
  * @param rs - The read stream.
  * @param file - Destination file path.
  */
-function readStreamToLocalFile(rs, file) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    var ws = fs.createWriteStream(file);
-                    rs.on("error", function (err) {
-                        reject(err);
-                    });
-                    ws.on("error", function (err) {
-                        reject(err);
-                    });
-                    ws.on("close", resolve);
-                    rs.pipe(ws);
-                })];
+async function readStreamToLocalFile(rs, file) {
+    return new Promise((resolve, reject) => {
+        const ws = fs.createWriteStream(file);
+        rs.on("error", (err) => {
+            reject(err);
         });
+        ws.on("error", (err) => {
+            reject(err);
+        });
+        ws.on("close", resolve);
+        rs.pipe(ws);
     });
 }
 /**
@@ -35878,21 +33863,18 @@ function readStreamToLocalFile(rs, file) {
  *
  * Promisified version of fs.stat().
  */
-var fsStat = util.promisify(fs.stat);
-var fsCreateReadStream = fs.createReadStream;
+const fsStat = util.promisify(fs.stat);
+const fsCreateReadStream = fs.createReadStream;
 
 /**
  * A BlobClient represents a URL to an Azure Storage blob; the blob may be a block blob,
  * append blob, or page blob.
  */
-var BlobClient = /** @class */ (function (_super) {
-    tslib.__extends(BlobClient, _super);
-    function BlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _a;
-        var _this = this;
+class BlobClient extends StorageClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
         options = options || {};
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
@@ -35918,12 +33900,12 @@ var BlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -35943,33 +33925,27 @@ var BlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        (_a = _this.getBlobAndContainerNamesFromUrl(), _this._name = _a.blobName, _this._containerName = _a.containerName);
-        _this.blobContext = new Blob$1(_this.storageClientContext);
-        _this._snapshot = getURLParameter(_this.url, URLConstants.Parameters.SNAPSHOT);
-        _this._versionId = getURLParameter(_this.url, URLConstants.Parameters.VERSIONID);
-        return _this;
+        super(url, pipeline);
+        ({
+            blobName: this._name,
+            containerName: this._containerName
+        } = this.getBlobAndContainerNamesFromUrl());
+        this.blobContext = new Blob$1(this.storageClientContext);
+        this._snapshot = getURLParameter(this.url, URLConstants.Parameters.SNAPSHOT);
+        this._versionId = getURLParameter(this.url, URLConstants.Parameters.VERSIONID);
+    }
+    /**
+     * The name of the blob.
+     */
+    get name() {
+        return this._name;
+    }
+    /**
+     * The name of the storage container the blob is associated with.
+     */
+    get containerName() {
+        return this._containerName;
     }
-    Object.defineProperty(BlobClient.prototype, "name", {
-        /**
-         * The name of the blob.
-         */
-        get: function () {
-            return this._name;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobClient.prototype, "containerName", {
-        /**
-         * The name of the storage container the blob is associated with.
-         */
-        get: function () {
-            return this._containerName;
-        },
-        enumerable: false,
-        configurable: true
-    });
     /**
      * Creates a new BlobClient object identical to the source but with the specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a Client to the base blob.
@@ -35977,9 +33953,9 @@ var BlobClient = /** @class */ (function (_super) {
      * @param snapshot - The snapshot timestamp.
      * @returns A new BlobClient object identical to the source but with the specified snapshot timestamp
      */
-    BlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a new BlobClient object pointing to a version of this blob.
      * Provide "" will remove the versionId and return a Client to the base blob.
@@ -35987,30 +33963,30 @@ var BlobClient = /** @class */ (function (_super) {
      * @param versionId - The versionId.
      * @returns A new BlobClient object pointing to the version of this blob.
      */
-    BlobClient.prototype.withVersion = function (versionId) {
+    withVersion(versionId) {
         return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.VERSIONID, versionId.length === 0 ? undefined : versionId), this.pipeline);
-    };
+    }
     /**
      * Creates a AppendBlobClient object.
      *
      */
-    BlobClient.prototype.getAppendBlobClient = function () {
+    getAppendBlobClient() {
         return new AppendBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Creates a BlockBlobClient object.
      *
      */
-    BlobClient.prototype.getBlockBlobClient = function () {
+    getBlockBlobClient() {
         return new BlockBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Creates a PageBlobClient object.
      *
      */
-    BlobClient.prototype.getPageBlobClient = function () {
+    getPageBlobClient() {
         return new PageBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Reads or downloads a blob from the system, including its metadata and properties.
      * You can also call Get Blob to read a snapshot.
@@ -36070,98 +34046,77 @@ var BlobClient = /** @class */ (function (_super) {
      * }
      * ```
      */
-    BlobClient.prototype.download = function (offset, count, options) {
+    async download(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, res_1, wrappedRes, e_1;
-            var _this = this;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        options.conditions = options.conditions || {};
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        _b = createSpan("BlobClient-download", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.download(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
-                                    onDownloadProgress: coreHttp.isNode ? undefined : options.onProgress // for Node.js, progress is reported by RetriableReadableStream
-                                }, range: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }), rangeGetContentMD5: options.rangeGetContentMD5, rangeGetContentCRC64: options.rangeGetContentCrc64, snapshot: options.snapshot, cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        res_1 = _c.sent();
-                        wrappedRes = tslib.__assign(tslib.__assign({}, res_1), { _response: res_1._response, objectReplicationDestinationPolicyId: res_1.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res_1.objectReplicationRules) });
-                        // We support retrying when download stream unexpected ends in Node.js runtime
-                        // Following code shouldn't be bundled into browser build, however some
-                        // bundlers may try to bundle following code and "FileReadResponse.ts".
-                        // In this case, "FileDownloadResponse.browser.ts" will be used as a shim of "FileDownloadResponse.ts"
-                        // The config is in package.json "browser" field
-                        if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {
-                            // TODO: Default value or make it a required parameter?
-                            options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;
-                        }
-                        if (res_1.contentLength === undefined) {
-                            throw new RangeError("File download response doesn't contain valid content length header");
-                        }
-                        if (!res_1.etag) {
-                            throw new RangeError("File download response doesn't contain valid etag header");
-                        }
-                        return [2 /*return*/, new BlobDownloadResponse(wrappedRes, function (start) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var updatedOptions;
-                                var _a;
-                                return tslib.__generator(this, function (_b) {
-                                    switch (_b.label) {
-                                        case 0:
-                                            updatedOptions = {
-                                                leaseAccessConditions: options.conditions,
-                                                modifiedAccessConditions: {
-                                                    ifMatch: options.conditions.ifMatch || res_1.etag,
-                                                    ifModifiedSince: options.conditions.ifModifiedSince,
-                                                    ifNoneMatch: options.conditions.ifNoneMatch,
-                                                    ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,
-                                                    ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions
-                                                },
-                                                range: rangeToString({
-                                                    count: offset + res_1.contentLength - start,
-                                                    offset: start
-                                                }),
-                                                rangeGetContentMD5: options.rangeGetContentMD5,
-                                                rangeGetContentCRC64: options.rangeGetContentCrc64,
-                                                snapshot: options.snapshot,
-                                                cpkInfo: options.customerProvidedKey
-                                            };
-                                            return [4 /*yield*/, this.blobContext.download(tslib.__assign({ abortSignal: options.abortSignal }, updatedOptions))];
-                                        case 1: 
-                                        // Debug purpose only
-                                        // console.log(
-                                        //   `Read from internal stream, range: ${
-                                        //     updatedOptions.range
-                                        //   }, options: ${JSON.stringify(updatedOptions)}`
-                                        // );
-                                        return [2 /*return*/, (_b.sent()).readableStreamBody];
-                                    }
-                                });
-                            }); }, offset, res_1.contentLength, {
-                                maxRetryRequests: options.maxRetryRequests,
-                                onProgress: options.onProgress
-                            })];
-                    case 3:
-                        e_1 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        options.conditions = options.conditions || {};
+        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+        const { span, updatedOptions } = createSpan("BlobClient-download", options);
+        try {
+            const res = await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onDownloadProgress: coreHttp.isNode ? undefined : options.onProgress // for Node.js, progress is reported by RetriableReadableStream
+                }, range: offset === 0 && !count ? undefined : rangeToString({ offset, count }), rangeGetContentMD5: options.rangeGetContentMD5, rangeGetContentCRC64: options.rangeGetContentCrc64, snapshot: options.snapshot, cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedRes = Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });
+            // Return browser response immediately
+            if (false) {}
+            // We support retrying when download stream unexpected ends in Node.js runtime
+            // Following code shouldn't be bundled into browser build, however some
+            // bundlers may try to bundle following code and "FileReadResponse.ts".
+            // In this case, "FileDownloadResponse.browser.ts" will be used as a shim of "FileDownloadResponse.ts"
+            // The config is in package.json "browser" field
+            if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {
+                // TODO: Default value or make it a required parameter?
+                options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;
+            }
+            if (res.contentLength === undefined) {
+                throw new RangeError(`File download response doesn't contain valid content length header`);
+            }
+            if (!res.etag) {
+                throw new RangeError(`File download response doesn't contain valid etag header`);
+            }
+            return new BlobDownloadResponse(wrappedRes, async (start) => {
+                var _a;
+                const updatedOptions = {
+                    leaseAccessConditions: options.conditions,
+                    modifiedAccessConditions: {
+                        ifMatch: options.conditions.ifMatch || res.etag,
+                        ifModifiedSince: options.conditions.ifModifiedSince,
+                        ifNoneMatch: options.conditions.ifNoneMatch,
+                        ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,
+                        ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions
+                    },
+                    range: rangeToString({
+                        count: offset + res.contentLength - start,
+                        offset: start
+                    }),
+                    rangeGetContentMD5: options.rangeGetContentMD5,
+                    rangeGetContentCRC64: options.rangeGetContentCrc64,
+                    snapshot: options.snapshot,
+                    cpkInfo: options.customerProvidedKey
+                };
+                // Debug purpose only
+                // console.log(
+                //   `Read from internal stream, range: ${
+                //     updatedOptions.range
+                //   }, options: ${JSON.stringify(updatedOptions)}`
+                // );
+                return (await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal }, updatedOptions))).readableStreamBody;
+            }, offset, res.contentLength, {
+                maxRetryRequests: options.maxRetryRequests,
+                onProgress: options.onProgress
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns true if the Azure blob resource represented by this client exists; false otherwise.
      *
@@ -36171,49 +34126,36 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - options to Exists operation.
      */
-    BlobClient.prototype.exists = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_2;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-exists", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.getProperties({
-                                abortSignal: options.abortSignal,
-                                customerProvidedKey: options.customerProvidedKey,
-                                conditions: options.conditions,
-                                tracingOptions: updatedOptions.tracingOptions
-                            })];
-                    case 2:
-                        _b.sent();
-                        return [2 /*return*/, true];
-                    case 3:
-                        e_2 = _b.sent();
-                        if (e_2.statusCode === 404) {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when checking blob existence"
-                            });
-                            return [2 /*return*/, false];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async exists(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-exists", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            await this.getProperties({
+                abortSignal: options.abortSignal,
+                customerProvidedKey: options.customerProvidedKey,
+                conditions: options.conditions,
+                tracingOptions: updatedOptions.tracingOptions
             });
-        });
-    };
+            return true;
+        }
+        catch (e) {
+            if (e.statusCode === 404) {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when checking blob existence"
+                });
+                return false;
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns all user-defined metadata, standard HTTP properties, and system properties
      * for the blob. It does not return the content of the blob.
@@ -36226,39 +34168,26 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - Optional options to Get Properties operation.
      */
-    BlobClient.prototype.getProperties = function (options) {
+    async getProperties(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, res, e_3;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-getProperties", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        options.conditions = options.conditions || {};
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.getProperties(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        res = _c.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) })];
-                    case 3:
-                        e_3 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-getProperties", options);
+        try {
+            options.conditions = options.conditions || {};
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            const res = await this.blobContext.getProperties(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));
+            return Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -36268,36 +34197,24 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - Optional options to Blob Delete operation.
      */
-    BlobClient.prototype.delete = function (options) {
+    async delete(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_4;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-delete", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.delete(tslib.__assign({ abortSignal: options.abortSignal, deleteSnapshots: options.deleteSnapshots, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_4 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-delete", options);
+        options.conditions = options.conditions || {};
+        try {
+            return await this.blobContext.delete(Object.assign({ abortSignal: options.abortSignal, deleteSnapshots: options.deleteSnapshots, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion if it exists. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -36307,45 +34224,32 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - Optional options to Blob Delete operation.
      */
-    BlobClient.prototype.deleteIfExists = function (options) {
+    async deleteIfExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, res, e_5;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("BlobClient-deleteIfExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.delete(updatedOptions)];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_5 = _d.sent();
-                        if (((_a = e_5.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobNotFound") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when deleting a blob or snapshot only if it exists."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_5.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_5.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-deleteIfExists", options);
+        try {
+            const res = await this.delete(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobNotFound") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when deleting a blob or snapshot only if it exists."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Restores the contents and metadata of soft deleted blob and any associated
      * soft deleted snapshots. Undelete Blob is supported only on version 2017-07-29
@@ -36354,34 +34258,22 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - Optional options to Blob Undelete operation.
      */
-    BlobClient.prototype.undelete = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_6;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-undelete", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.undelete(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_6 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async undelete(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-undelete", options);
+        try {
+            return await this.blobContext.undelete(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets system properties on the blob.
      *
@@ -36394,37 +34286,25 @@ var BlobClient = /** @class */ (function (_super) {
      *                                                   headers without a value will be cleared.
      * @param options - Optional options to Blob Set HTTP Headers operation.
      */
-    BlobClient.prototype.setHTTPHeaders = function (blobHTTPHeaders, options) {
+    async setHTTPHeaders(blobHTTPHeaders, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_7;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setHTTPHeaders", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.setHttpHeaders(tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_7 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setHTTPHeaders", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.setHttpHeaders(Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets user-defined metadata for the specified blob as one or more name-value pairs.
      *
@@ -36436,37 +34316,25 @@ var BlobClient = /** @class */ (function (_super) {
      *                               If no value provided the existing metadata will be removed.
      * @param options - Optional options to Set Metadata operation.
      */
-    BlobClient.prototype.setMetadata = function (metadata, options) {
+    async setMetadata(metadata, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_8;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setMetadata", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.setMetadata(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_8 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setMetadata", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.setMetadata(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets tags on the underlying blob.
      * A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters.  Tag values must be between 0 and 256 characters.
@@ -36476,118 +34344,81 @@ var BlobClient = /** @class */ (function (_super) {
      * @param tags -
      * @param options -
      */
-    BlobClient.prototype.setTags = function (tags, options) {
+    async setTags(tags, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_9;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setTags", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.setTags(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)), { tags: toBlobTags(tags) }))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_9 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_9.message
-                        });
-                        throw e_9;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setTags", options);
+        try {
+            return await this.blobContext.setTags(Object.assign(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)), { tags: toBlobTags(tags) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the tags associated with the underlying blob.
      *
      * @param options -
      */
-    BlobClient.prototype.getTags = function (options) {
+    async getTags(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, response, wrappedResponse, e_10;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-getTags", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.getTags(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _c.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_10 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_10.message
-                        });
-                        throw e_10;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-getTags", options);
+        try {
+            const response = await this.blobContext.getTags(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Get a {@link BlobLeaseClient} that manages leases on the blob.
      *
      * @param proposeLeaseId - Initial proposed lease Id.
      * @returns A new BlobLeaseClient object for managing leases on the blob.
      */
-    BlobClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
+    getBlobLeaseClient(proposeLeaseId) {
         return new BlobLeaseClient(this, proposeLeaseId);
-    };
+    }
     /**
      * Creates a read-only snapshot of a blob.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/snapshot-blob
      *
      * @param options - Optional options to the Blob Create Snapshot operation.
      */
-    BlobClient.prototype.createSnapshot = function (options) {
+    async createSnapshot(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_11;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-createSnapshot", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.createSnapshot(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_11 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_11.message
-                        });
-                        throw e_11;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-createSnapshot", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.createSnapshot(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Asynchronously copies a blob to a destination within the storage account.
      * This method returns a long running operation poller that allows you to wait
@@ -36660,57 +34491,25 @@ var BlobClient = /** @class */ (function (_super) {
      * @param copySource - url to the source Azure Blob/File.
      * @param options - Optional options to the Blob Start Copy From URL operation.
      */
-    BlobClient.prototype.beginCopyFromURL = function (copySource, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var client, poller;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        client = {
-                            abortCopyFromURL: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.abortCopyFromURL.apply(_this, args);
-                            },
-                            getProperties: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.getProperties.apply(_this, args);
-                            },
-                            startCopyFromURL: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.startCopyFromURL.apply(_this, args);
-                            }
-                        };
-                        poller = new BlobBeginCopyFromUrlPoller({
-                            blobClient: client,
-                            copySource: copySource,
-                            intervalInMs: options.intervalInMs,
-                            onProgress: options.onProgress,
-                            resumeFrom: options.resumeFrom,
-                            startCopyFromURLOptions: options
-                        });
-                        // Trigger the startCopyFromURL call by calling poll.
-                        // Any errors from this method should be surfaced to the user.
-                        return [4 /*yield*/, poller.poll()];
-                    case 1:
-                        // Trigger the startCopyFromURL call by calling poll.
-                        // Any errors from this method should be surfaced to the user.
-                        _a.sent();
-                        return [2 /*return*/, poller];
-                }
-            });
+    async beginCopyFromURL(copySource, options = {}) {
+        const client = {
+            abortCopyFromURL: (...args) => this.abortCopyFromURL(...args),
+            getProperties: (...args) => this.getProperties(...args),
+            startCopyFromURL: (...args) => this.startCopyFromURL(...args)
+        };
+        const poller = new BlobBeginCopyFromUrlPoller({
+            blobClient: client,
+            copySource,
+            intervalInMs: options.intervalInMs,
+            onProgress: options.onProgress,
+            resumeFrom: options.resumeFrom,
+            startCopyFromURLOptions: options
         });
-    };
+        // Trigger the startCopyFromURL call by calling poll.
+        // Any errors from this method should be surfaced to the user.
+        await poller.poll();
+        return poller;
+    }
     /**
      * Aborts a pending asynchronous Copy Blob operation, and leaves a destination blob with zero
      * length and full metadata. Version 2012-02-12 and newer.
@@ -36719,34 +34518,22 @@ var BlobClient = /** @class */ (function (_super) {
      * @param copyId - Id of the Copy From URL operation.
      * @param options - Optional options to the Blob Abort Copy From URL operation.
      */
-    BlobClient.prototype.abortCopyFromURL = function (copyId, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_12;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-abortCopyFromURL", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.abortCopyFromURL(copyId, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_12 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_12.message
-                        });
-                        throw e_12;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async abortCopyFromURL(copyId, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-abortCopyFromURL", options);
+        try {
+            return await this.blobContext.abortCopyFromURL(copyId, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The synchronous Copy From URL operation copies a blob or an internet resource to a new blob. It will not
      * return a response until the copy is complete.
@@ -36755,42 +34542,30 @@ var BlobClient = /** @class */ (function (_super) {
      * @param copySource - The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication
      * @param options -
      */
-    BlobClient.prototype.syncCopyFromURL = function (copySource, options) {
+    async syncCopyFromURL(copySource, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_13;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-syncCopyFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.copyFromURL(copySource, tslib.__assign({ abortSignal: options.abortSignal, metadata: options.metadata, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                }, sourceContentMD5: options.sourceContentMD5, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_13 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_13.message
-                        });
-                        throw e_13;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-syncCopyFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            return await this.blobContext.copyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, metadata: options.metadata, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, sourceContentMD5: options.sourceContentMD5, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets the tier on a blob. The operation is allowed on a page blob in a premium
      * storage account and on a block blob in a blob storage account (locally redundant
@@ -36802,159 +34577,119 @@ var BlobClient = /** @class */ (function (_super) {
      * @param tier - The tier to be set on the blob. Valid values are Hot, Cool, or Archive.
      * @param options - Optional options to the Blob Set Tier operation.
      */
-    BlobClient.prototype.setAccessTier = function (tier, options) {
+    async setAccessTier(tier, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_14;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setAccessTier", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.setTier(toAccessTier(tier), tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), rehydratePriority: options.rehydratePriority }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_14 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_14.message
-                        });
-                        throw e_14;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setAccessTier", options);
+        try {
+            return await this.blobContext.setTier(toAccessTier(tier), Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), rehydratePriority: options.rehydratePriority }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    BlobClient.prototype.downloadToBuffer = function (param1, param2, param3, param4) {
-        if (param4 === void 0) { param4 = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buffer, offset, count, options, _a, span, updatedOptions, response, transferProgress_1, batch, _loop_1, off, e_15;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        offset = 0;
-                        count = 0;
-                        options = param4;
-                        if (param1 instanceof Buffer) {
-                            buffer = param1;
-                            offset = param2 || 0;
-                            count = typeof param3 === "number" ? param3 : 0;
-                        }
-                        else {
-                            offset = typeof param1 === "number" ? param1 : 0;
-                            count = typeof param2 === "number" ? param2 : 0;
-                            options = param3 || {};
-                        }
-                        _a = createSpan("BlobClient-downloadToBuffer", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0) {
-                            throw new RangeError("blockSize option must be >= 0");
-                        }
-                        if (options.blockSize === 0) {
-                            options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                        }
-                        if (offset < 0) {
-                            throw new RangeError("offset option must be >= 0");
-                        }
-                        if (count && count <= 0) {
-                            throw new RangeError("count option must be greater than 0");
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        if (!!count) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.getProperties(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
-                    case 2:
-                        response = _b.sent();
-                        count = response.contentLength - offset;
-                        if (count < 0) {
-                            throw new RangeError("offset " + offset + " shouldn't be larger than blob size " + response.contentLength);
-                        }
-                        _b.label = 3;
-                    case 3:
-                        // Allocate the buffer of size = count if the buffer is not provided
-                        if (!buffer) {
-                            try {
-                                buffer = Buffer.alloc(count);
-                            }
-                            catch (error) {
-                                throw new Error("Unable to allocate the buffer of size: " + count + "(in bytes). Please try passing your own buffer to the \"downloadToBuffer\" method or try using other methods like \"download\" or \"downloadToFile\".\t " + error.message);
-                            }
-                        }
-                        if (buffer.length < count) {
-                            throw new RangeError("The buffer's size should be equal to or larger than the request count of bytes: " + count);
-                        }
-                        transferProgress_1 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_1 = function (off) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var chunkEnd, response, stream;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            chunkEnd = offset + count;
-                                            if (off + options.blockSize < chunkEnd) {
-                                                chunkEnd = off + options.blockSize;
-                                            }
-                                            return [4 /*yield*/, this.download(off, chunkEnd - off, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    maxRetryRequests: options.maxRetryRequestsPerBlock,
-                                                    customerProvidedKey: options.customerProvidedKey,
-                                                    tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions))
-                                                })];
-                                        case 1:
-                                            response = _a.sent();
-                                            stream = response.readableStreamBody;
-                                            return [4 /*yield*/, streamToBuffer(stream, buffer, off - offset, chunkEnd - offset)];
-                                        case 2:
-                                            _a.sent();
-                                            // Update progress after block is downloaded, in case of block trying
-                                            // Could provide finer grained progress updating inside HTTP requests,
-                                            // only if convenience layer download try is enabled
-                                            transferProgress_1 += chunkEnd - off;
-                                            if (options.onProgress) {
-                                                options.onProgress({ loadedBytes: transferProgress_1 });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (off = offset; off < offset + count; off = off + options.blockSize) {
-                            _loop_1(off);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [2 /*return*/, buffer];
-                    case 5:
-                        e_15 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_15.message
-                        });
-                        throw e_15;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    async downloadToBuffer(param1, param2, param3, param4 = {}) {
+        let buffer;
+        let offset = 0;
+        let count = 0;
+        let options = param4;
+        if (param1 instanceof Buffer) {
+            buffer = param1;
+            offset = param2 || 0;
+            count = typeof param3 === "number" ? param3 : 0;
+        }
+        else {
+            offset = typeof param1 === "number" ? param1 : 0;
+            count = typeof param2 === "number" ? param2 : 0;
+            options = param3 || {};
+        }
+        const { span, updatedOptions } = createSpan("BlobClient-downloadToBuffer", options);
+        try {
+            if (!options.blockSize) {
+                options.blockSize = 0;
+            }
+            if (options.blockSize < 0) {
+                throw new RangeError("blockSize option must be >= 0");
+            }
+            if (options.blockSize === 0) {
+                options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
+            }
+            if (offset < 0) {
+                throw new RangeError("offset option must be >= 0");
+            }
+            if (count && count <= 0) {
+                throw new RangeError("count option must be greater than 0");
+            }
+            if (!options.conditions) {
+                options.conditions = {};
+            }
+            // Customer doesn't specify length, get it
+            if (!count) {
+                const response = await this.getProperties(Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+                count = response.contentLength - offset;
+                if (count < 0) {
+                    throw new RangeError(`offset ${offset} shouldn't be larger than blob size ${response.contentLength}`);
                 }
+            }
+            // Allocate the buffer of size = count if the buffer is not provided
+            if (!buffer) {
+                try {
+                    buffer = Buffer.alloc(count);
+                }
+                catch (error) {
+                    throw new Error(`Unable to allocate the buffer of size: ${count}(in bytes). Please try passing your own buffer to the "downloadToBuffer" method or try using other methods like "download" or "downloadToFile".\t ${error.message}`);
+                }
+            }
+            if (buffer.length < count) {
+                throw new RangeError(`The buffer's size should be equal to or larger than the request count of bytes: ${count}`);
+            }
+            let transferProgress = 0;
+            const batch = new Batch(options.concurrency);
+            for (let off = offset; off < offset + count; off = off + options.blockSize) {
+                batch.addOperation(async () => {
+                    // Exclusive chunk end position
+                    let chunkEnd = offset + count;
+                    if (off + options.blockSize < chunkEnd) {
+                        chunkEnd = off + options.blockSize;
+                    }
+                    const response = await this.download(off, chunkEnd - off, {
+                        abortSignal: options.abortSignal,
+                        conditions: options.conditions,
+                        maxRetryRequests: options.maxRetryRequestsPerBlock,
+                        customerProvidedKey: options.customerProvidedKey,
+                        tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions))
+                    });
+                    const stream = response.readableStreamBody;
+                    await streamToBuffer(stream, buffer, off - offset, chunkEnd - offset);
+                    // Update progress after block is downloaded, in case of block trying
+                    // Could provide finer grained progress updating inside HTTP requests,
+                    // only if convenience layer download try is enabled
+                    transferProgress += chunkEnd - off;
+                    if (options.onProgress) {
+                        options.onProgress({ loadedBytes: transferProgress });
+                    }
+                });
+            }
+            await batch.do();
+            return buffer;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -36971,48 +34706,31 @@ var BlobClient = /** @class */ (function (_super) {
      *                                                 content is already read and written into a local file
      *                                                 at the specified path.
      */
-    BlobClient.prototype.downloadToFile = function (filePath, offset, count, options) {
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, e_16;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-downloadToFile", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        return [4 /*yield*/, this.download(offset, count, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
-                    case 2:
-                        response = _b.sent();
-                        if (!response.readableStreamBody) return [3 /*break*/, 4];
-                        return [4 /*yield*/, readStreamToLocalFile(response.readableStreamBody, filePath)];
-                    case 3:
-                        _b.sent();
-                        _b.label = 4;
-                    case 4:
-                        // The stream is no longer accessible so setting it to undefined.
-                        response.blobDownloadStream = undefined;
-                        return [2 /*return*/, response];
-                    case 5:
-                        e_16 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_16.message
-                        });
-                        throw e_16;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
-                }
+    async downloadToFile(filePath, offset = 0, count, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-downloadToFile", options);
+        try {
+            const response = await this.download(offset, count, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+            if (response.readableStreamBody) {
+                await readStreamToLocalFile(response.readableStreamBody, filePath);
+            }
+            // The stream is no longer accessible so setting it to undefined.
+            response.blobDownloadStream = undefined;
+            return response;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    BlobClient.prototype.getBlobAndContainerNamesFromUrl = function () {
-        var containerName;
-        var blobName;
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    getBlobAndContainerNamesFromUrl() {
+        let containerName;
+        let blobName;
         try {
             //  URL may look like the following
             // "https://myaccount.blob.core.windows.net/mycontainer/blob?sasString";
@@ -37021,11 +34739,11 @@ var BlobClient = /** @class */ (function (_super) {
             // "https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt";
             // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername/blob`
             // http://localhost:10001/devstoreaccount1/containername/blob
-            var parsedUrl = coreHttp.URLBuilder.parse(this.url);
+            const parsedUrl = coreHttp.URLBuilder.parse(this.url);
             if (parsedUrl.getHost().split(".")[1] === "blob") {
                 // "https://myaccount.blob.core.windows.net/containername/blob".
                 // .getPath() -> /containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
                 containerName = pathComponents[1];
                 blobName = pathComponents[3];
             }
@@ -37033,14 +34751,14 @@ var BlobClient = /** @class */ (function (_super) {
                 // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername/blob
                 // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername/blob
                 // .getPath() -> /devstoreaccount1/containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)/([^/]*)(/(.*))?");
                 containerName = pathComponents[2];
                 blobName = pathComponents[4];
             }
             else {
                 // "https://customdomain.com/containername/blob".
                 // .getPath() -> /containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
                 containerName = pathComponents[1];
                 blobName = pathComponents[3];
             }
@@ -37053,12 +34771,12 @@ var BlobClient = /** @class */ (function (_super) {
             if (!containerName) {
                 throw new Error("Provided containerName is invalid.");
             }
-            return { blobName: blobName, containerName: containerName };
+            return { blobName, containerName };
         }
         catch (error) {
             throw new Error("Unable to extract blobName and containerName with provided information.");
         }
-    };
+    }
     /**
      * Asynchronously copies a blob to a destination within the storage account.
      * In version 2012-02-12 and later, the source for a Copy Blob operation can be
@@ -37072,43 +34790,31 @@ var BlobClient = /** @class */ (function (_super) {
      * @param copySource - url to the source Azure Blob/File.
      * @param options - Optional options to the Blob Start Copy From URL operation.
      */
-    BlobClient.prototype.startCopyFromURL = function (copySource, options) {
+    async startCopyFromURL(copySource, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_17;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-startCopyFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.startCopyFromURL(copySource, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,
-                                    sourceIfTags: options.sourceConditions.tagConditions
-                                }, rehydratePriority: options.rehydratePriority, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), sealBlob: options.sealBlob }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_17 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_17.message
-                        });
-                        throw e_17;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-startCopyFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            return await this.blobContext.startCopyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,
+                    sourceIfTags: options.sourceConditions.tagConditions
+                }, rehydratePriority: options.rehydratePriority, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), sealBlob: options.sealBlob }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Only available for BlobClient constructed with a shared key credential.
      *
@@ -37120,29 +34826,25 @@ var BlobClient = /** @class */ (function (_super) {
      * @param options - Optional parameters.
      * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
      */
-    BlobClient.prototype.generateSasUrl = function (options) {
-        var _this = this;
-        return new Promise(function (resolve) {
-            if (!(_this.credential instanceof StorageSharedKeyCredential)) {
+    generateSasUrl(options) {
+        return new Promise((resolve) => {
+            if (!(this.credential instanceof StorageSharedKeyCredential)) {
                 throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
             }
-            var sas = generateBlobSASQueryParameters(tslib.__assign({ containerName: _this._containerName, blobName: _this._name, snapshotTime: _this._snapshot, versionId: _this._versionId }, options), _this.credential).toString();
-            resolve(appendToURLQuery(_this.url, sas));
+            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), this.credential).toString();
+            resolve(appendToURLQuery(this.url, sas));
         });
-    };
-    return BlobClient;
-}(StorageClient));
+    }
+}
 /**
  * AppendBlobClient defines a set of operations applicable to append blobs.
  */
-var AppendBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(AppendBlobClient, _super);
-    function AppendBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class AppendBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
@@ -37169,12 +34871,12 @@ var AppendBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -37194,9 +34896,8 @@ var AppendBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.appendBlobContext = new AppendBlob(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.appendBlobContext = new AppendBlob(this.storageClientContext);
     }
     /**
      * Creates a new AppendBlobClient object identical to the source but with the
@@ -37206,9 +34907,9 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * @param snapshot - The snapshot timestamp.
      * @returns A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    AppendBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new AppendBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
@@ -37223,37 +34924,25 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * await appendBlobClient.create();
      * ```
      */
-    AppendBlobClient.prototype.create = function (options) {
+    async create(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_18;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-create", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.create(0, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_18 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_18.message
-                        });
-                        throw e_18;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-create", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.create(0, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
      * If the blob with the same name already exists, the content of the existing blob will remain unchanged.
@@ -37261,81 +34950,56 @@ var AppendBlobClient = /** @class */ (function (_super) {
      *
      * @param options -
      */
-    AppendBlobClient.prototype.createIfNotExists = function (options) {
+    async createIfNotExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, conditions, res, e_19;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("AppendBlobClient-createIfNotExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        conditions = { ifNoneMatch: ETagAny };
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.create(tslib.__assign(tslib.__assign({}, updatedOptions), { conditions: conditions }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_19 = _d.sent();
-                        if (((_a = e_19.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when creating a blob only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_19.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_19.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_19.message
-                        });
-                        throw e_19;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-createIfNotExists", options);
+        const conditions = { ifNoneMatch: ETagAny };
+        try {
+            const res = await this.create(Object.assign(Object.assign({}, updatedOptions), { conditions }));
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a blob only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Seals the append blob, making it read only.
      *
      * @param options -
      */
-    AppendBlobClient.prototype.seal = function (options) {
+    async seal(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_20;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-seal", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.appendBlobContext.seal(tslib.__assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_20 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_20.message
-                        });
-                        throw e_20;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-seal", options);
+        options.conditions = options.conditions || {};
+        try {
+            return await this.appendBlobContext.seal(Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Commits a new block of data to the end of the existing append blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/append-block
@@ -37360,39 +35024,27 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * await existingAppendBlobClient.appendBlock(content, content.length);
      * ```
      */
-    AppendBlobClient.prototype.appendBlock = function (body, contentLength, options) {
+    async appendBlock(body, contentLength, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_21;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-appendBlock", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.appendBlock(contentLength, body, tslib.__assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
-                                    onUploadProgress: options.onProgress
-                                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_21 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_21.message
-                        });
-                        throw e_21;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-appendBlock", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.appendBlock(contentLength, body, Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Append Block operation commits a new block of data to the end of an existing append blob
      * where the contents are read from a source url.
@@ -37407,56 +35059,41 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * @param count - Number of bytes to be appended as a block
      * @param options -
      */
-    AppendBlobClient.prototype.appendBlockFromURL = function (sourceURL, sourceOffset, count, options) {
+    async appendBlockFromURL(sourceURL, sourceOffset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_22;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-appendBlockFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, tslib.__assign({ abortSignal: options.abortSignal, sourceRange: rangeToString({ offset: sourceOffset, count: count }), sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, appendPositionAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_22 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_22.message
-                        });
-                        throw e_22;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-appendBlockFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, Object.assign({ abortSignal: options.abortSignal, sourceRange: rangeToString({ offset: sourceOffset, count }), sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, appendPositionAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return AppendBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * BlockBlobClient defines a set of operations applicable to block blobs.
  */
-var BlockBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(BlockBlobClient, _super);
-    function BlockBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class BlockBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
@@ -37483,12 +35120,12 @@ var BlockBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -37508,10 +35145,9 @@ var BlockBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.blockBlobContext = new BlockBlob(_this.storageClientContext);
-        _this._blobContext = new Blob$1(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.blockBlobContext = new BlockBlob(this.storageClientContext);
+        this._blobContext = new Blob$1(this.storageClientContext);
     }
     /**
      * Creates a new BlockBlobClient object identical to the source but with the
@@ -37521,9 +35157,9 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param snapshot - The snapshot timestamp.
      * @returns A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    BlockBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new BlockBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -37554,47 +35190,35 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param query -
      * @param options -
      */
-    BlockBlobClient.prototype.query = function (query, options) {
+    async query(query, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, response, e_23;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        _b = createSpan("BlockBlobClient-query", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._blobContext.query(tslib.__assign({ abortSignal: options.abortSignal, queryRequest: {
-                                    queryType: "SQL",
-                                    expression: query,
-                                    inputSerialization: toQuerySerialization(options.inputTextConfiguration),
-                                    outputSerialization: toQuerySerialization(options.outputTextConfiguration)
-                                }, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _c.sent();
-                        return [2 /*return*/, new BlobQueryResponse(response, {
-                                abortSignal: options.abortSignal,
-                                onProgress: options.onProgress,
-                                onError: options.onError
-                            })];
-                    case 3:
-                        e_23 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_23.message
-                        });
-                        throw e_23;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+        const { span, updatedOptions } = createSpan("BlockBlobClient-query", options);
+        try {
+            if (false) {}
+            const response = await this._blobContext.query(Object.assign({ abortSignal: options.abortSignal, queryRequest: {
+                    queryType: "SQL",
+                    expression: query,
+                    inputSerialization: toQuerySerialization(options.inputTextConfiguration),
+                    outputSerialization: toQuerySerialization(options.outputTextConfiguration)
+                }, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            return new BlobQueryResponse(response, {
+                abortSignal: options.abortSignal,
+                onProgress: options.onProgress,
+                onError: options.onError
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new block blob, or updates the content of an existing block blob.
      * Updating an existing block blob overwrites any existing metadata on the blob.
@@ -37622,39 +35246,27 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
      * ```
      */
-    BlockBlobClient.prototype.upload = function (body, contentLength, options) {
+    async upload(body, contentLength, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_24;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("BlockBlobClient-upload", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.upload(contentLength, body, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
-                                    onUploadProgress: options.onProgress
-                                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_24 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_24.message
-                        });
-                        throw e_24;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-upload", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.upload(contentLength, body, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new Block Blob where the contents of the blob are read from a given URL.
      * This API is supported beginning with the 2020-04-08 version. Partial updates
@@ -37673,43 +35285,31 @@ var BlockBlobClient = /** @class */ (function (_super) {
      *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
      * @param options - Optional parameters.
      */
-    BlockBlobClient.prototype.syncUploadFromURL = function (sourceURL, options) {
+    async syncUploadFromURL(sourceURL, options = {}) {
         var _a, _b, _c, _d, _e;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _f, span, updatedOptions, e_25;
-            return tslib.__generator(this, function (_g) {
-                switch (_g.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _f = createSpan("BlockBlobClient-syncUploadFromURL", options), span = _f.span, updatedOptions = _f.updatedOptions;
-                        _g.label = 1;
-                    case 1:
-                        _g.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.putBlobFromUrl(0, sourceURL, tslib.__assign(tslib.__assign(tslib.__assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: options.conditions.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: (_a = options.sourceConditions) === null || _a === void 0 ? void 0 : _a.ifMatch,
-                                    sourceIfModifiedSince: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifModifiedSince,
-                                    sourceIfNoneMatch: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifUnmodifiedSince,
-                                    sourceIfTags: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.tagConditions
-                                }, cpkInfo: options.customerProvidedKey, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _g.sent()];
-                    case 3:
-                        e_25 = _g.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_25.message
-                        });
-                        throw e_25;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-syncUploadFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.putBlobFromUrl(0, sourceURL, Object.assign(Object.assign(Object.assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: options.conditions.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: (_a = options.sourceConditions) === null || _a === void 0 ? void 0 : _a.ifMatch,
+                    sourceIfModifiedSince: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifModifiedSince,
+                    sourceIfNoneMatch: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch,
+                    sourceIfUnmodifiedSince: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifUnmodifiedSince,
+                    sourceIfTags: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.tagConditions
+                }, cpkInfo: options.customerProvidedKey, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Uploads the specified block to the block blob's "staging area" to be later
      * committed by a call to commitBlockList.
@@ -37721,37 +35321,25 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Block Blob Stage Block operation.
      * @returns Response data for the Block Blob Stage Block operation.
      */
-    BlockBlobClient.prototype.stageBlock = function (blockId, body, contentLength, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_26;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-stageBlock", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.stageBlock(blockId, contentLength, body, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, requestOptions: {
-                                    onUploadProgress: options.onProgress
-                                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_26 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_26.message
-                        });
-                        throw e_26;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async stageBlock(blockId, body, contentLength, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-stageBlock", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.stageBlock(blockId, contentLength, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Stage Block From URL operation creates a new block to be committed as part
      * of a blob where the contents are read from a URL.
@@ -37773,36 +35361,23 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Block Blob Stage Block From URL operation.
      * @returns Response data for the Block Blob Stage Block From URL operation.
      */
-    BlockBlobClient.prototype.stageBlockFromURL = function (blockId, sourceURL, offset, count, options) {
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_27;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-stageBlockFromURL", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_27 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_27.message
-                        });
-                        throw e_27;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async stageBlockFromURL(blockId, sourceURL, offset = 0, count, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-stageBlockFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset, count }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Writes a blob by specifying the list of block IDs that make up the blob.
      * In order to be written as part of a blob, a block must have been successfully written
@@ -37815,37 +35390,25 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Block Blob Commit Block List operation.
      * @returns Response data for the Block Blob Commit Block List operation.
      */
-    BlockBlobClient.prototype.commitBlockList = function (blocks, options) {
+    async commitBlockList(blocks, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_28;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("BlockBlobClient-commitBlockList", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.commitBlockList({ latest: blocks }, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_28 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_28.message
-                        });
-                        throw e_28;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-commitBlockList", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.commitBlockList({ latest: blocks }, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns the list of blocks that have been uploaded as part of a block blob
      * using the specified block list filter.
@@ -37856,43 +35419,30 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Block Blob Get Block List operation.
      * @returns Response data for the Block Blob Get Block List operation.
      */
-    BlockBlobClient.prototype.getBlockList = function (listType, options) {
+    async getBlockList(listType, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, res, e_29;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlockBlobClient-getBlockList", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blockBlobContext.getBlockList(listType, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        res = _c.sent();
-                        if (!res.committedBlocks) {
-                            res.committedBlocks = [];
-                        }
-                        if (!res.uncommittedBlocks) {
-                            res.uncommittedBlocks = [];
-                        }
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_29 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_29.message
-                        });
-                        throw e_29;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-getBlockList", options);
+        try {
+            const res = await this.blockBlobContext.getBlockList(listType, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            if (!res.committedBlocks) {
+                res.committedBlocks = [];
+            }
+            if (!res.uncommittedBlocks) {
+                res.uncommittedBlocks = [];
+            }
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     // High level functions
     /**
      * Uploads a Buffer(Node.js)/Blob(browsers)/ArrayBuffer/ArrayBufferView object to a BlockBlob.
@@ -37905,42 +35455,36 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param data - Buffer(Node.js), Blob, ArrayBuffer or ArrayBufferView
      * @param options -
      */
-    BlockBlobClient.prototype.uploadData = function (data, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, buffer_1, browserBlob_1;
-            return tslib.__generator(this, function (_b) {
-                _a = createSpan("BlockBlobClient-uploadData", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                try {
-                    if (true) {
-                        if (data instanceof Buffer) {
-                            buffer_1 = data;
-                        }
-                        else if (data instanceof ArrayBuffer) {
-                            buffer_1 = Buffer.from(data);
-                        }
-                        else {
-                            data = data;
-                            buffer_1 = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
-                        }
-                        return [2 /*return*/, this.uploadSeekableInternal(function (offset, size) { return buffer_1.slice(offset, offset + size); }, buffer_1.byteLength, updatedOptions)];
-                    }
-                    else {}
+    async uploadData(data, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadData", options);
+        try {
+            if (true) {
+                let buffer;
+                if (data instanceof Buffer) {
+                    buffer = data;
                 }
-                catch (e) {
-                    span.setStatus({
-                        code: coreTracing.SpanStatusCode.ERROR,
-                        message: e.message
-                    });
-                    throw e;
+                else if (data instanceof ArrayBuffer) {
+                    buffer = Buffer.from(data);
                 }
-                finally {
-                    span.end();
+                else {
+                    data = data;
+                    buffer = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
                 }
-                return [2 /*return*/];
+                return this.uploadSeekableInternal((offset, size) => buffer.slice(offset, offset + size), buffer.byteLength, updatedOptions);
+            }
+            else {}
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN BROWSERS.
      *
@@ -37956,35 +35500,23 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to upload browser data.
      * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadBrowserData = function (browserData, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, browserBlob_2, e_30;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-uploadBrowserData", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        browserBlob_2 = new Blob([browserData]);
-                        return [4 /*yield*/, this.uploadSeekableInternal(function (offset, size) { return browserBlob_2.slice(offset, offset + size); }, browserBlob_2.size, updatedOptions)];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_30 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_30.message
-                        });
-                        throw e_30;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async uploadBrowserData(browserData, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadBrowserData", options);
+        try {
+            const browserBlob = new Blob([browserData]);
+            return await this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      *
      * Uploads data to block blob. Requires a bodyFactory as the data source,
@@ -38000,115 +35532,88 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to Upload to Block Blob operation.
      * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadSeekableInternal = function (bodyFactory, size, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, numBlocks_1, blockList_1, blockIDPrefix_1, transferProgress_2, batch, _loop_2, i, e_31;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
-                            throw new RangeError("blockSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES);
-                        }
-                        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
-                            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
-                        }
-                        if (options.maxSingleShotSize < 0 ||
-                            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
-                            throw new RangeError("maxSingleShotSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES);
-                        }
-                        if (options.blockSize === 0) {
-                            if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {
-                                throw new RangeError(size + " is too larger to upload to a block blob.");
-                            }
-                            if (size > options.maxSingleShotSize) {
-                                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
-                                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
-                                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                                }
-                            }
-                        }
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-uploadSeekableInternal", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        if (!(size <= options.maxSingleShotSize)) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.upload(bodyFactory(0, size), size, updatedOptions)];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        numBlocks_1 = Math.floor((size - 1) / options.blockSize) + 1;
-                        if (numBlocks_1 > BLOCK_BLOB_MAX_BLOCKS) {
-                            throw new RangeError("The buffer's size is too big or the BlockSize is too small;" +
-                                ("the number of blocks must be <= " + BLOCK_BLOB_MAX_BLOCKS));
-                        }
-                        blockList_1 = [];
-                        blockIDPrefix_1 = coreHttp.generateUuid();
-                        transferProgress_2 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_2 = function (i) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var blockID, start, end, contentLength;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            blockID = generateBlockID(blockIDPrefix_1, i);
-                                            start = options.blockSize * i;
-                                            end = i === numBlocks_1 - 1 ? size : start + options.blockSize;
-                                            contentLength = end - start;
-                                            blockList_1.push(blockID);
-                                            return [4 /*yield*/, this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    encryptionScope: options.encryptionScope,
-                                                    tracingOptions: updatedOptions.tracingOptions
-                                                })];
-                                        case 1:
-                                            _a.sent();
-                                            // Update progress after block is successfully uploaded to server, in case of block trying
-                                            // TODO: Hook with convenience layer progress event in finer level
-                                            transferProgress_2 += contentLength;
-                                            if (options.onProgress) {
-                                                options.onProgress({
-                                                    loadedBytes: transferProgress_2
-                                                });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (i = 0; i < numBlocks_1; i++) {
-                            _loop_2(i);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [2 /*return*/, this.commitBlockList(blockList_1, updatedOptions)];
-                    case 5:
-                        e_31 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_31.message
-                        });
-                        throw e_31;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
+    async uploadSeekableInternal(bodyFactory, size, options = {}) {
+        if (!options.blockSize) {
+            options.blockSize = 0;
+        }
+        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
+            throw new RangeError(`blockSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES}`);
+        }
+        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
+            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
+        }
+        if (options.maxSingleShotSize < 0 ||
+            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
+            throw new RangeError(`maxSingleShotSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}`);
+        }
+        if (options.blockSize === 0) {
+            if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {
+                throw new RangeError(`${size} is too larger to upload to a block blob.`);
+            }
+            if (size > options.maxSingleShotSize) {
+                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
+                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
+                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
                 }
+            }
+        }
+        if (!options.blobHTTPHeaders) {
+            options.blobHTTPHeaders = {};
+        }
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadSeekableInternal", options);
+        try {
+            if (size <= options.maxSingleShotSize) {
+                return await this.upload(bodyFactory(0, size), size, updatedOptions);
+            }
+            const numBlocks = Math.floor((size - 1) / options.blockSize) + 1;
+            if (numBlocks > BLOCK_BLOB_MAX_BLOCKS) {
+                throw new RangeError(`The buffer's size is too big or the BlockSize is too small;` +
+                    `the number of blocks must be <= ${BLOCK_BLOB_MAX_BLOCKS}`);
+            }
+            const blockList = [];
+            const blockIDPrefix = coreHttp.generateUuid();
+            let transferProgress = 0;
+            const batch = new Batch(options.concurrency);
+            for (let i = 0; i < numBlocks; i++) {
+                batch.addOperation(async () => {
+                    const blockID = generateBlockID(blockIDPrefix, i);
+                    const start = options.blockSize * i;
+                    const end = i === numBlocks - 1 ? size : start + options.blockSize;
+                    const contentLength = end - start;
+                    blockList.push(blockID);
+                    await this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {
+                        abortSignal: options.abortSignal,
+                        conditions: options.conditions,
+                        encryptionScope: options.encryptionScope,
+                        tracingOptions: updatedOptions.tracingOptions
+                    });
+                    // Update progress after block is successfully uploaded to server, in case of block trying
+                    // TODO: Hook with convenience layer progress event in finer level
+                    transferProgress += contentLength;
+                    if (options.onProgress) {
+                        options.onProgress({
+                            loadedBytes: transferProgress
+                        });
+                    }
+                });
+            }
+            await batch.do();
+            return this.commitBlockList(blockList, updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -38122,45 +35627,29 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to Upload to Block Blob operation.
      * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadFile = function (filePath, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, size, e_32;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-uploadFile", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        return [4 /*yield*/, fsStat(filePath)];
-                    case 2:
-                        size = (_b.sent()).size;
-                        return [4 /*yield*/, this.uploadSeekableInternal(function (offset, count) {
-                                return function () {
-                                    return fsCreateReadStream(filePath, {
-                                        autoClose: true,
-                                        end: count ? offset + count - 1 : Infinity,
-                                        start: offset
-                                    });
-                                };
-                            }, size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
-                    case 3: return [2 /*return*/, _b.sent()];
-                    case 4:
-                        e_32 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_32.message
-                        });
-                        throw e_32;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
+    async uploadFile(filePath, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadFile", options);
+        try {
+            const size = (await fsStat(filePath)).size;
+            return await this.uploadSeekableInternal((offset, count) => {
+                return () => fsCreateReadStream(filePath, {
+                    autoClose: true,
+                    end: count ? offset + count - 1 : Infinity,
+                    start: offset
+                });
+            }, size, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -38177,92 +35666,63 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to Upload Stream to Block Blob operation.
      * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadStream = function (stream, bufferSize, maxConcurrency, options) {
-        if (bufferSize === void 0) { bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES; }
-        if (maxConcurrency === void 0) { maxConcurrency = 5; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, blockNum_1, blockIDPrefix_2, transferProgress_3, blockList_2, scheduler, e_33;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-uploadStream", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        blockNum_1 = 0;
-                        blockIDPrefix_2 = coreHttp.generateUuid();
-                        transferProgress_3 = 0;
-                        blockList_2 = [];
-                        scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, function (body, length) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                            var blockID;
-                            return tslib.__generator(this, function (_a) {
-                                switch (_a.label) {
-                                    case 0:
-                                        blockID = generateBlockID(blockIDPrefix_2, blockNum_1);
-                                        blockList_2.push(blockID);
-                                        blockNum_1++;
-                                        return [4 /*yield*/, this.stageBlock(blockID, body, length, {
-                                                conditions: options.conditions,
-                                                encryptionScope: options.encryptionScope,
-                                                tracingOptions: updatedOptions.tracingOptions
-                                            })];
-                                    case 1:
-                                        _a.sent();
-                                        // Update progress after block is successfully uploaded to server, in case of block trying
-                                        transferProgress_3 += length;
-                                        if (options.onProgress) {
-                                            options.onProgress({ loadedBytes: transferProgress_3 });
-                                        }
-                                        return [2 /*return*/];
-                                }
-                            });
-                        }); }, 
-                        // concurrency should set a smaller value than maxConcurrency, which is helpful to
-                        // reduce the possibility when a outgoing handler waits for stream data, in
-                        // this situation, outgoing handlers are blocked.
-                        // Outgoing queue shouldn't be empty.
-                        Math.ceil((maxConcurrency / 4) * 3));
-                        return [4 /*yield*/, scheduler.do()];
-                    case 2:
-                        _b.sent();
-                        return [4 /*yield*/, this.commitBlockList(blockList_2, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
-                    case 3: return [2 /*return*/, _b.sent()];
-                    case 4:
-                        e_33 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_33.message
-                        });
-                        throw e_33;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
+    async uploadStream(stream, bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES, maxConcurrency = 5, options = {}) {
+        if (!options.blobHTTPHeaders) {
+            options.blobHTTPHeaders = {};
+        }
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadStream", options);
+        try {
+            let blockNum = 0;
+            const blockIDPrefix = coreHttp.generateUuid();
+            let transferProgress = 0;
+            const blockList = [];
+            const scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, async (body, length) => {
+                const blockID = generateBlockID(blockIDPrefix, blockNum);
+                blockList.push(blockID);
+                blockNum++;
+                await this.stageBlock(blockID, body, length, {
+                    conditions: options.conditions,
+                    encryptionScope: options.encryptionScope,
+                    tracingOptions: updatedOptions.tracingOptions
+                });
+                // Update progress after block is successfully uploaded to server, in case of block trying
+                transferProgress += length;
+                if (options.onProgress) {
+                    options.onProgress({ loadedBytes: transferProgress });
                 }
+            }, 
+            // concurrency should set a smaller value than maxConcurrency, which is helpful to
+            // reduce the possibility when a outgoing handler waits for stream data, in
+            // this situation, outgoing handlers are blocked.
+            // Outgoing queue shouldn't be empty.
+            Math.ceil((maxConcurrency / 4) * 3));
+            await scheduler.do();
+            return await this.commitBlockList(blockList, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlockBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * PageBlobClient defines a set of operations applicable to page blobs.
  */
-var PageBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(PageBlobClient, _super);
-    function PageBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class PageBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
@@ -38289,12 +35749,12 @@ var PageBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -38314,9 +35774,8 @@ var PageBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.pageBlobContext = new PageBlob(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.pageBlobContext = new PageBlob(this.storageClientContext);
     }
     /**
      * Creates a new PageBlobClient object identical to the source but with the
@@ -38326,9 +35785,9 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param snapshot - The snapshot timestamp.
      * @returns A new PageBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    PageBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new PageBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a page blob of the specified length. Call uploadPages to upload data
      * data to a page blob.
@@ -38338,37 +35797,25 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Create operation.
      * @returns Response data for the Page Blob Create operation.
      */
-    PageBlobClient.prototype.create = function (size, options) {
+    async create(size, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_34;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-create", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.create(0, size, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, blobSequenceNumber: options.blobSequenceNumber, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_34 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_34.message
-                        });
-                        throw e_34;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-create", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.create(0, size, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, blobSequenceNumber: options.blobSequenceNumber, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a page blob of the specified length. Call uploadPages to upload data
      * data to a page blob. If the blob with the same name already exists, the content
@@ -38378,46 +35825,33 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param size - size of the page blob.
      * @param options -
      */
-    PageBlobClient.prototype.createIfNotExists = function (size, options) {
+    async createIfNotExists(size, options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, conditions, res, e_35;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("PageBlobClient-createIfNotExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        conditions = { ifNoneMatch: ETagAny };
-                        return [4 /*yield*/, this.create(size, tslib.__assign(tslib.__assign({}, options), { conditions: conditions, tracingOptions: updatedOptions.tracingOptions }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_35 = _d.sent();
-                        if (((_a = e_35.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when creating a blob only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_35.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_35.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_35.message
-                        });
-                        throw e_35;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("PageBlobClient-createIfNotExists", options);
+        try {
+            const conditions = { ifNoneMatch: ETagAny };
+            const res = await this.create(size, Object.assign(Object.assign({}, options), { conditions, tracingOptions: updatedOptions.tracingOptions }));
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a blob only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Writes 1 or more pages to the page blob. The start and end offsets must be a multiple of 512.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-page
@@ -38428,39 +35862,27 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Upload Pages operation.
      * @returns Response data for the Page Blob Upload Pages operation.
      */
-    PageBlobClient.prototype.uploadPages = function (body, offset, count, options) {
+    async uploadPages(body, offset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_36;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-uploadPages", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.uploadPages(count, body, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
-                                    onUploadProgress: options.onProgress
-                                }, range: rangeToString({ offset: offset, count: count }), sequenceNumberAccessConditions: options.conditions, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_36 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_36.message
-                        });
-                        throw e_36;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-uploadPages", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.uploadPages(count, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Upload Pages operation writes a range of pages to a page blob where the
      * contents are read from a URL.
@@ -38472,43 +35894,31 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param count - Number of bytes to be uploaded from source page blob
      * @param options -
      */
-    PageBlobClient.prototype.uploadPagesFromURL = function (sourceURL, sourceOffset, destOffset, count, options) {
+    async uploadPagesFromURL(sourceURL, sourceOffset, destOffset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_37;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _b = createSpan("PageBlobClient-uploadPagesFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count: count }), 0, rangeToString({ offset: destOffset, count: count }), tslib.__assign({ abortSignal: options.abortSignal, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, sequenceNumberAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_37 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_37.message
-                        });
-                        throw e_37;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-uploadPagesFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count }), 0, rangeToString({ offset: destOffset, count }), Object.assign({ abortSignal: options.abortSignal, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, sequenceNumberAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Frees the specified pages from the page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-page
@@ -38518,37 +35928,24 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Clear Pages operation.
      * @returns Response data for the Page Blob Clear Pages operation.
      */
-    PageBlobClient.prototype.clearPages = function (offset, count, options) {
+    async clearPages(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_38;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-clearPages", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.clearPages(0, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset: offset, count: count }), sequenceNumberAccessConditions: options.conditions, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_38 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_38.message
-                        });
-                        throw e_38;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-clearPages", options);
+        try {
+            return await this.pageBlobContext.clearPages(0, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns the list of valid page ranges for a page blob or snapshot of a page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
@@ -38558,39 +35955,26 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Get Ranges operation.
      * @returns Response data for the Page Blob Get Ranges operation.
      */
-    PageBlobClient.prototype.getPageRanges = function (offset, count, options) {
+    async getPageRanges(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_39;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-getPageRanges", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRanges(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset: offset, count: count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_39 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_39.message
-                        });
-                        throw e_39;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-getPageRanges", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRanges(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the collection of page ranges that differ between a specified snapshot and this page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
@@ -38601,38 +35985,26 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Get Page Ranges Diff operation.
      * @returns Response data for the Page Blob Get Page Range Diff operation.
      */
-    PageBlobClient.prototype.getPageRangesDiff = function (offset, count, prevSnapshot, options) {
+    async getPageRangesDiff(offset, count, prevSnapshot, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_40;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-getPageRangesDiff", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRangesDiff(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevsnapshot: prevSnapshot, range: rangeToString({ offset: offset, count: count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_40 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_40.message
-                        });
-                        throw e_40;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-getPageRangesDiff", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevsnapshot: prevSnapshot, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the collection of page ranges that differ between a specified snapshot and this page blob for managed disks.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
@@ -38643,38 +36015,26 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Get Page Ranges Diff operation.
      * @returns Response data for the Page Blob Get Page Range Diff operation.
      */
-    PageBlobClient.prototype.getPageRangesDiffForManagedDisks = function (offset, count, prevSnapshotUrl, options) {
+    async getPageRangesDiffForManagedDisks(offset, count, prevSnapshotUrl, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_41;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-GetPageRangesDiffForManagedDisks", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRangesDiff(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevSnapshotUrl: prevSnapshotUrl, range: rangeToString({ offset: offset, count: count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_41 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_41.message
-                        });
-                        throw e_41;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-GetPageRangesDiffForManagedDisks", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevSnapshotUrl, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Resizes the page blob to the specified size (which must be a multiple of 512).
      * @see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties
@@ -38683,36 +36043,24 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Resize operation.
      * @returns Response data for the Page Blob Resize operation.
      */
-    PageBlobClient.prototype.resize = function (size, options) {
+    async resize(size, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_42;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-resize", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.resize(size, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_42 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_42.message
-                        });
-                        throw e_42;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-resize", options);
+        try {
+            return await this.pageBlobContext.resize(size, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets a page blob's sequence number.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties
@@ -38722,36 +36070,24 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Update Sequence Number operation.
      * @returns Response data for the Page Blob Update Sequence Number operation.
      */
-    PageBlobClient.prototype.updateSequenceNumber = function (sequenceNumberAction, sequenceNumber, options) {
+    async updateSequenceNumber(sequenceNumberAction, sequenceNumber, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_43;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-updateSequenceNumber", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, tslib.__assign({ abortSignal: options.abortSignal, blobSequenceNumber: sequenceNumber, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_43 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_43.message
-                        });
-                        throw e_43;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-updateSequenceNumber", options);
+        try {
+            return await this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, Object.assign({ abortSignal: options.abortSignal, blobSequenceNumber: sequenceNumber, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Begins an operation to start an incremental copy from one page blob's snapshot to this page blob.
      * The snapshot is copied such that only the differential changes between the previously
@@ -38765,69 +36101,46 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Copy Incremental operation.
      * @returns Response data for the Page Blob Copy Incremental operation.
      */
-    PageBlobClient.prototype.startCopyIncremental = function (copySource, options) {
+    async startCopyIncremental(copySource, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_44;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("PageBlobClient-startCopyIncremental", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.copyIncremental(copySource, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_44 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_44.message
-                        });
-                        throw e_44;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("PageBlobClient-startCopyIncremental", options);
+        try {
+            return await this.pageBlobContext.copyIncremental(copySource, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return PageBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-function getBodyAsText(batchResponse) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var buffer, responseLength;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    buffer = Buffer.alloc(BATCH_MAX_PAYLOAD_IN_BYTES);
-                    return [4 /*yield*/, streamToBuffer2(batchResponse.readableStreamBody, buffer)];
-                case 1:
-                    responseLength = _a.sent();
-                    // Slice the buffer to trim the empty ending.
-                    buffer = buffer.slice(0, responseLength);
-                    return [2 /*return*/, buffer.toString()];
-            }
-        });
-    });
+async function getBodyAsText(batchResponse) {
+    let buffer = Buffer.alloc(BATCH_MAX_PAYLOAD_IN_BYTES);
+    const responseLength = await streamToBuffer2(batchResponse.readableStreamBody, buffer);
+    // Slice the buffer to trim the empty ending.
+    buffer = buffer.slice(0, responseLength);
+    return buffer.toString();
 }
 function utf8ByteLength(str) {
     return Buffer.byteLength(str);
 }
 
 // Copyright (c) Microsoft Corporation.
-var HTTP_HEADER_DELIMITER = ": ";
-var SPACE_DELIMITER = " ";
-var NOT_FOUND = -1;
+const HTTP_HEADER_DELIMITER = ": ";
+const SPACE_DELIMITER = " ";
+const NOT_FOUND = -1;
 /**
  * Util class for parsing batch response.
  */
-var BatchResponseParser = /** @class */ (function () {
-    function BatchResponseParser(batchResponse, subRequests) {
+class BatchResponseParser {
+    constructor(batchResponse, subRequests) {
         if (!batchResponse || !batchResponse.contentType) {
             // In special case(reported), server may return invalid content-type which could not be parsed.
             throw new RangeError("batchResponse is malformed or doesn't contain valid content-type.");
@@ -38839,129 +36152,119 @@ var BatchResponseParser = /** @class */ (function () {
         this.batchResponse = batchResponse;
         this.subRequests = subRequests;
         this.responseBatchBoundary = this.batchResponse.contentType.split("=")[1];
-        this.perResponsePrefix = "--" + this.responseBatchBoundary + HTTP_LINE_ENDING;
-        this.batchResponseEnding = "--" + this.responseBatchBoundary + "--";
+        this.perResponsePrefix = `--${this.responseBatchBoundary}${HTTP_LINE_ENDING}`;
+        this.batchResponseEnding = `--${this.responseBatchBoundary}--`;
     }
     // For example of response, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#response
-    BatchResponseParser.prototype.parseBatchResponse = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var responseBodyAsText, subResponses, subResponseCount, deserializedSubResponses, subResponsesSucceededCount, subResponsesFailedCount, index, subResponse, deserializedSubResponse, responseLines, subRespHeaderStartFound, subRespHeaderEndFound, subRespFailed, contentId, _i, responseLines_1, responseLine, tokens, tokens;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse
-                        // sub request's response.
-                        if (this.batchResponse._response.status != HTTPURLConnection.HTTP_ACCEPTED) {
-                            throw new Error("Invalid state: batch request failed with status: '" + this.batchResponse._response.status + "'.");
-                        }
-                        return [4 /*yield*/, getBodyAsText(this.batchResponse)];
-                    case 1:
-                        responseBodyAsText = _a.sent();
-                        subResponses = responseBodyAsText
-                            .split(this.batchResponseEnding)[0] // string after ending is useless
-                            .split(this.perResponsePrefix)
-                            .slice(1);
-                        subResponseCount = subResponses.length;
-                        // Defensive coding in case of potential error parsing.
-                        // Note: subResponseCount == 1 is special case where sub request is invalid.
-                        // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.
-                        // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.
-                        if (subResponseCount != this.subRequests.size && subResponseCount != 1) {
-                            throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.");
-                        }
-                        deserializedSubResponses = new Array(subResponseCount);
-                        subResponsesSucceededCount = 0;
-                        subResponsesFailedCount = 0;
-                        // Parse sub subResponses.
-                        for (index = 0; index < subResponseCount; index++) {
-                            subResponse = subResponses[index];
-                            deserializedSubResponse = {};
-                            deserializedSubResponse.headers = new coreHttp.HttpHeaders();
-                            responseLines = subResponse.split("" + HTTP_LINE_ENDING);
-                            subRespHeaderStartFound = false;
-                            subRespHeaderEndFound = false;
-                            subRespFailed = false;
-                            contentId = NOT_FOUND;
-                            for (_i = 0, responseLines_1 = responseLines; _i < responseLines_1.length; _i++) {
-                                responseLine = responseLines_1[_i];
-                                if (!subRespHeaderStartFound) {
-                                    // Convention line to indicate content ID
-                                    if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {
-                                        contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);
-                                    }
-                                    // Http version line with status code indicates the start of sub request's response.
-                                    // Example: HTTP/1.1 202 Accepted
-                                    if (responseLine.startsWith(HTTP_VERSION_1_1)) {
-                                        subRespHeaderStartFound = true;
-                                        tokens = responseLine.split(SPACE_DELIMITER);
-                                        deserializedSubResponse.status = parseInt(tokens[1]);
-                                        deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);
-                                    }
-                                    continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *
-                                }
-                                if (responseLine.trim() === "") {
-                                    // Sub response's header start line already found, and the first empty line indicates header end line found.
-                                    if (!subRespHeaderEndFound) {
-                                        subRespHeaderEndFound = true;
-                                    }
-                                    continue; // Skip empty line
-                                }
-                                // Note: when code reach here, it indicates subRespHeaderStartFound == true
-                                if (!subRespHeaderEndFound) {
-                                    if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {
-                                        // Defensive coding to prevent from missing valuable lines.
-                                        throw new Error("Invalid state: find non-empty line '" + responseLine + "' without HTTP header delimiter '" + HTTP_HEADER_DELIMITER + "'.");
-                                    }
-                                    tokens = responseLine.split(HTTP_HEADER_DELIMITER);
-                                    deserializedSubResponse.headers.set(tokens[0], tokens[1]);
-                                    if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {
-                                        deserializedSubResponse.errorCode = tokens[1];
-                                        subRespFailed = true;
-                                    }
-                                }
-                                else {
-                                    // Assemble body of sub response.
-                                    if (!deserializedSubResponse.bodyAsText) {
-                                        deserializedSubResponse.bodyAsText = "";
-                                    }
-                                    deserializedSubResponse.bodyAsText += responseLine;
-                                }
-                            } // Inner for end
-                            // The response will contain the Content-ID header for each corresponding subrequest response to use for tracking.
-                            // The Content-IDs are set to a valid index in the subrequests we sent. In the status code 202 path, we could expect it
-                            // to be 1-1 mapping from the [0, subRequests.size) to the Content-IDs returned. If not, we simply don't return that
-                            // unexpected subResponse in the parsed reponse and we can always look it up in the raw response for debugging purpose.
-                            if (contentId != NOT_FOUND &&
-                                Number.isInteger(contentId) &&
-                                contentId >= 0 &&
-                                contentId < this.subRequests.size &&
-                                deserializedSubResponses[contentId] === undefined) {
-                                deserializedSubResponse._request = this.subRequests.get(contentId);
-                                deserializedSubResponses[contentId] = deserializedSubResponse;
-                            }
-                            else {
-                                logger.error("subResponses[" + index + "] is dropped as the Content-ID is not found or invalid, Content-ID: " + contentId);
-                            }
-                            if (subRespFailed) {
-                                subResponsesFailedCount++;
-                            }
-                            else {
-                                subResponsesSucceededCount++;
-                            }
-                        }
-                        return [2 /*return*/, {
-                                subResponses: deserializedSubResponses,
-                                subResponsesSucceededCount: subResponsesSucceededCount,
-                                subResponsesFailedCount: subResponsesFailedCount
-                            }];
+    async parseBatchResponse() {
+        // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse
+        // sub request's response.
+        if (this.batchResponse._response.status != HTTPURLConnection.HTTP_ACCEPTED) {
+            throw new Error(`Invalid state: batch request failed with status: '${this.batchResponse._response.status}'.`);
+        }
+        const responseBodyAsText = await getBodyAsText(this.batchResponse);
+        const subResponses = responseBodyAsText
+            .split(this.batchResponseEnding)[0] // string after ending is useless
+            .split(this.perResponsePrefix)
+            .slice(1); // string before first response boundary is useless
+        const subResponseCount = subResponses.length;
+        // Defensive coding in case of potential error parsing.
+        // Note: subResponseCount == 1 is special case where sub request is invalid.
+        // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.
+        // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.
+        if (subResponseCount != this.subRequests.size && subResponseCount != 1) {
+            throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.");
+        }
+        const deserializedSubResponses = new Array(subResponseCount);
+        let subResponsesSucceededCount = 0;
+        let subResponsesFailedCount = 0;
+        // Parse sub subResponses.
+        for (let index = 0; index < subResponseCount; index++) {
+            const subResponse = subResponses[index];
+            const deserializedSubResponse = {};
+            deserializedSubResponse.headers = new coreHttp.HttpHeaders();
+            const responseLines = subResponse.split(`${HTTP_LINE_ENDING}`);
+            let subRespHeaderStartFound = false;
+            let subRespHeaderEndFound = false;
+            let subRespFailed = false;
+            let contentId = NOT_FOUND;
+            for (const responseLine of responseLines) {
+                if (!subRespHeaderStartFound) {
+                    // Convention line to indicate content ID
+                    if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {
+                        contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);
+                    }
+                    // Http version line with status code indicates the start of sub request's response.
+                    // Example: HTTP/1.1 202 Accepted
+                    if (responseLine.startsWith(HTTP_VERSION_1_1)) {
+                        subRespHeaderStartFound = true;
+                        const tokens = responseLine.split(SPACE_DELIMITER);
+                        deserializedSubResponse.status = parseInt(tokens[1]);
+                        deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);
+                    }
+                    continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *
                 }
-            });
-        });
-    };
-    return BatchResponseParser;
-}());
+                if (responseLine.trim() === "") {
+                    // Sub response's header start line already found, and the first empty line indicates header end line found.
+                    if (!subRespHeaderEndFound) {
+                        subRespHeaderEndFound = true;
+                    }
+                    continue; // Skip empty line
+                }
+                // Note: when code reach here, it indicates subRespHeaderStartFound == true
+                if (!subRespHeaderEndFound) {
+                    if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {
+                        // Defensive coding to prevent from missing valuable lines.
+                        throw new Error(`Invalid state: find non-empty line '${responseLine}' without HTTP header delimiter '${HTTP_HEADER_DELIMITER}'.`);
+                    }
+                    // Parse headers of sub response.
+                    const tokens = responseLine.split(HTTP_HEADER_DELIMITER);
+                    deserializedSubResponse.headers.set(tokens[0], tokens[1]);
+                    if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {
+                        deserializedSubResponse.errorCode = tokens[1];
+                        subRespFailed = true;
+                    }
+                }
+                else {
+                    // Assemble body of sub response.
+                    if (!deserializedSubResponse.bodyAsText) {
+                        deserializedSubResponse.bodyAsText = "";
+                    }
+                    deserializedSubResponse.bodyAsText += responseLine;
+                }
+            } // Inner for end
+            // The response will contain the Content-ID header for each corresponding subrequest response to use for tracking.
+            // The Content-IDs are set to a valid index in the subrequests we sent. In the status code 202 path, we could expect it
+            // to be 1-1 mapping from the [0, subRequests.size) to the Content-IDs returned. If not, we simply don't return that
+            // unexpected subResponse in the parsed reponse and we can always look it up in the raw response for debugging purpose.
+            if (contentId != NOT_FOUND &&
+                Number.isInteger(contentId) &&
+                contentId >= 0 &&
+                contentId < this.subRequests.size &&
+                deserializedSubResponses[contentId] === undefined) {
+                deserializedSubResponse._request = this.subRequests.get(contentId);
+                deserializedSubResponses[contentId] = deserializedSubResponse;
+            }
+            else {
+                logger.error(`subResponses[${index}] is dropped as the Content-ID is not found or invalid, Content-ID: ${contentId}`);
+            }
+            if (subRespFailed) {
+                subResponsesFailedCount++;
+            }
+            else {
+                subResponsesSucceededCount++;
+            }
+        }
+        return {
+            subResponses: deserializedSubResponses,
+            subResponsesSucceededCount: subResponsesSucceededCount,
+            subResponsesFailedCount: subResponsesFailedCount
+        };
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 var MutexLockStatus;
 (function (MutexLockStatus) {
     MutexLockStatus[MutexLockStatus["LOCKED"] = 0] = "LOCKED";
@@ -38970,82 +36273,68 @@ var MutexLockStatus;
 /**
  * An async mutex lock.
  */
-var Mutex = /** @class */ (function () {
-    function Mutex() {
-    }
+class Mutex {
     /**
      * Lock for a specific key. If the lock has been acquired by another customer, then
      * will wait until getting the lock.
      *
      * @param key - lock key
      */
-    Mutex.lock = function (key) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve) {
-                        if (_this.keys[key] === undefined || _this.keys[key] === MutexLockStatus.UNLOCKED) {
-                            _this.keys[key] = MutexLockStatus.LOCKED;
-                            resolve();
-                        }
-                        else {
-                            _this.onUnlockEvent(key, function () {
-                                _this.keys[key] = MutexLockStatus.LOCKED;
-                                resolve();
-                            });
-                        }
-                    })];
-            });
+    static async lock(key) {
+        return new Promise((resolve) => {
+            if (this.keys[key] === undefined || this.keys[key] === MutexLockStatus.UNLOCKED) {
+                this.keys[key] = MutexLockStatus.LOCKED;
+                resolve();
+            }
+            else {
+                this.onUnlockEvent(key, () => {
+                    this.keys[key] = MutexLockStatus.LOCKED;
+                    resolve();
+                });
+            }
         });
-    };
+    }
     /**
      * Unlock a key.
      *
      * @param key -
      */
-    Mutex.unlock = function (key) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve) {
-                        if (_this.keys[key] === MutexLockStatus.LOCKED) {
-                            _this.emitUnlockEvent(key);
-                        }
-                        delete _this.keys[key];
-                        resolve();
-                    })];
-            });
+    static async unlock(key) {
+        return new Promise((resolve) => {
+            if (this.keys[key] === MutexLockStatus.LOCKED) {
+                this.emitUnlockEvent(key);
+            }
+            delete this.keys[key];
+            resolve();
         });
-    };
-    Mutex.onUnlockEvent = function (key, handler) {
+    }
+    static onUnlockEvent(key, handler) {
         if (this.listeners[key] === undefined) {
             this.listeners[key] = [handler];
         }
         else {
             this.listeners[key].push(handler);
         }
-    };
-    Mutex.emitUnlockEvent = function (key) {
-        var _this = this;
+    }
+    static emitUnlockEvent(key) {
         if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {
-            var handler_1 = this.listeners[key].shift();
-            setImmediate(function () {
-                handler_1.call(_this);
+            const handler = this.listeners[key].shift();
+            setImmediate(() => {
+                handler.call(this);
             });
         }
-    };
-    Mutex.keys = {};
-    Mutex.listeners = {};
-    return Mutex;
-}());
+    }
+}
+Mutex.keys = {};
+Mutex.listeners = {};
 
 // Copyright (c) Microsoft Corporation.
 /**
  * A BlobBatch represents an aggregated set of operations on blobs.
  * Currently, only `delete` and `setAccessTier` are supported.
  */
-var BlobBatch = /** @class */ (function () {
-    function BlobBatch() {
+class BlobBatch {
+    constructor() {
         this.batch = "batch";
         this.batchRequest = new InnerBatchRequest();
     }
@@ -39054,203 +36343,151 @@ var BlobBatch = /** @class */ (function () {
      * The value must be multipart/mixed with a batch boundary.
      * Example: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252
      */
-    BlobBatch.prototype.getMultiPartContentType = function () {
+    getMultiPartContentType() {
         return this.batchRequest.getMultipartContentType();
-    };
+    }
     /**
      * Get assembled HTTP request body for sub requests.
      */
-    BlobBatch.prototype.getHttpRequestBody = function () {
+    getHttpRequestBody() {
         return this.batchRequest.getHttpRequestBody();
-    };
+    }
     /**
      * Get sub requests that are added into the batch request.
      */
-    BlobBatch.prototype.getSubRequests = function () {
+    getSubRequests() {
         return this.batchRequest.getSubRequests();
-    };
-    BlobBatch.prototype.addSubRequestInternal = function (subRequest, assembleSubRequestFunc) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, Mutex.lock(this.batch)];
-                    case 1:
-                        _a.sent();
-                        _a.label = 2;
-                    case 2:
-                        _a.trys.push([2, , 4, 6]);
-                        this.batchRequest.preAddSubRequest(subRequest);
-                        return [4 /*yield*/, assembleSubRequestFunc()];
-                    case 3:
-                        _a.sent();
-                        this.batchRequest.postAddSubRequest(subRequest);
-                        return [3 /*break*/, 6];
-                    case 4: return [4 /*yield*/, Mutex.unlock(this.batch)];
-                    case 5:
-                        _a.sent();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    BlobBatch.prototype.setBatchType = function (batchType) {
+    }
+    async addSubRequestInternal(subRequest, assembleSubRequestFunc) {
+        await Mutex.lock(this.batch);
+        try {
+            this.batchRequest.preAddSubRequest(subRequest);
+            await assembleSubRequestFunc();
+            this.batchRequest.postAddSubRequest(subRequest);
+        }
+        finally {
+            await Mutex.unlock(this.batch);
+        }
+    }
+    setBatchType(batchType) {
         if (!this.batchType) {
             this.batchType = batchType;
         }
         if (this.batchType !== batchType) {
-            throw new RangeError("BlobBatch only supports one operation type per batch and it already is being used for " + this.batchType + " operations.");
+            throw new RangeError(`BlobBatch only supports one operation type per batch and it already is being used for ${this.batchType} operations.`);
         }
-    };
-    BlobBatch.prototype.deleteBlob = function (urlOrBlobClient, credentialOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var url, credential, _a, span, updatedOptions, e_1;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (typeof urlOrBlobClient === "string" &&
-                            ((coreHttp.isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||
-                                credentialOrOptions instanceof AnonymousCredential ||
-                                coreHttp.isTokenCredential(credentialOrOptions))) {
-                            // First overload
-                            url = urlOrBlobClient;
-                            credential = credentialOrOptions;
-                        }
-                        else if (urlOrBlobClient instanceof BlobClient) {
-                            // Second overload
-                            url = urlOrBlobClient.url;
-                            credential = urlOrBlobClient.credential;
-                            options = credentialOrOptions;
-                        }
-                        else {
-                            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
-                        }
-                        if (!options) {
-                            options = {};
-                        }
-                        _a = createSpan("BatchDeleteRequest-addSubRequest", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        this.setBatchType("delete");
-                        return [4 /*yield*/, this.addSubRequestInternal({
-                                url: url,
-                                credential: credential
-                            }, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(updatedOptions)];
-                                        case 1:
-                                            _a.sent();
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); })];
-                    case 2:
-                        _b.sent();
-                        return [3 /*break*/, 5];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    }
+    async deleteBlob(urlOrBlobClient, credentialOrOptions, options) {
+        let url;
+        let credential;
+        if (typeof urlOrBlobClient === "string" &&
+            ((coreHttp.isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||
+                credentialOrOptions instanceof AnonymousCredential ||
+                coreHttp.isTokenCredential(credentialOrOptions))) {
+            // First overload
+            url = urlOrBlobClient;
+            credential = credentialOrOptions;
+        }
+        else if (urlOrBlobClient instanceof BlobClient) {
+            // Second overload
+            url = urlOrBlobClient.url;
+            credential = urlOrBlobClient.credential;
+            options = credentialOrOptions;
+        }
+        else {
+            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
+        }
+        if (!options) {
+            options = {};
+        }
+        const { span, updatedOptions } = createSpan("BatchDeleteRequest-addSubRequest", options);
+        try {
+            this.setBatchType("delete");
+            await this.addSubRequestInternal({
+                url: url,
+                credential: credential
+            }, async () => {
+                await new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(updatedOptions);
             });
-        });
-    };
-    BlobBatch.prototype.setBlobAccessTier = function (urlOrBlobClient, credentialOrTier, tierOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var url, credential, tier, _a, span, updatedOptions, e_2;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (typeof urlOrBlobClient === "string" &&
-                            ((coreHttp.isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||
-                                credentialOrTier instanceof AnonymousCredential ||
-                                coreHttp.isTokenCredential(credentialOrTier))) {
-                            // First overload
-                            url = urlOrBlobClient;
-                            credential = credentialOrTier;
-                            tier = tierOrOptions;
-                        }
-                        else if (urlOrBlobClient instanceof BlobClient) {
-                            // Second overload
-                            url = urlOrBlobClient.url;
-                            credential = urlOrBlobClient.credential;
-                            tier = credentialOrTier;
-                            options = tierOrOptions;
-                        }
-                        else {
-                            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
-                        }
-                        if (!options) {
-                            options = {};
-                        }
-                        _a = createSpan("BatchSetTierRequest-addSubRequest", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        this.setBatchType("setAccessTier");
-                        return [4 /*yield*/, this.addSubRequestInternal({
-                                url: url,
-                                credential: credential
-                            }, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, updatedOptions)];
-                                        case 1:
-                                            _a.sent();
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); })];
-                    case 2:
-                        _b.sent();
-                        return [3 /*break*/, 5];
-                    case 3:
-                        e_2 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlobBatch;
-}());
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    async setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options) {
+        let url;
+        let credential;
+        let tier;
+        if (typeof urlOrBlobClient === "string" &&
+            ((coreHttp.isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||
+                credentialOrTier instanceof AnonymousCredential ||
+                coreHttp.isTokenCredential(credentialOrTier))) {
+            // First overload
+            url = urlOrBlobClient;
+            credential = credentialOrTier;
+            tier = tierOrOptions;
+        }
+        else if (urlOrBlobClient instanceof BlobClient) {
+            // Second overload
+            url = urlOrBlobClient.url;
+            credential = urlOrBlobClient.credential;
+            tier = credentialOrTier;
+            options = tierOrOptions;
+        }
+        else {
+            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
+        }
+        if (!options) {
+            options = {};
+        }
+        const { span, updatedOptions } = createSpan("BatchSetTierRequest-addSubRequest", options);
+        try {
+            this.setBatchType("setAccessTier");
+            await this.addSubRequestInternal({
+                url: url,
+                credential: credential
+            }, async () => {
+                await new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, updatedOptions);
+            });
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * Inner batch request class which is responsible for assembling and serializing sub requests.
  * See https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#request-body for how requests are assembled.
  */
-var InnerBatchRequest = /** @class */ (function () {
-    function InnerBatchRequest() {
+class InnerBatchRequest {
+    constructor() {
         this.operationCount = 0;
         this.body = "";
-        var tempGuid = coreHttp.generateUuid();
+        const tempGuid = coreHttp.generateUuid();
         // batch_{batchid}
-        this.boundary = "batch_" + tempGuid;
+        this.boundary = `batch_${tempGuid}`;
         // --batch_{batchid}
         // Content-Type: application/http
         // Content-Transfer-Encoding: binary
-        this.subRequestPrefix = "--" + this.boundary + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TYPE + ": application/http" + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TRANSFER_ENCODING + ": binary";
+        this.subRequestPrefix = `--${this.boundary}${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TYPE}: application/http${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TRANSFER_ENCODING}: binary`;
         // multipart/mixed; boundary=batch_{batchid}
-        this.multipartContentType = "multipart/mixed; boundary=" + this.boundary;
+        this.multipartContentType = `multipart/mixed; boundary=${this.boundary}`;
         // --batch_{batchid}--
-        this.batchRequestEnding = "--" + this.boundary + "--";
+        this.batchRequestEnding = `--${this.boundary}--`;
         this.subRequests = new Map();
     }
     /**
@@ -39260,10 +36497,10 @@ var InnerBatchRequest = /** @class */ (function () {
      * and intercept request from going to wire.
      * @param credential -  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
      */
-    InnerBatchRequest.prototype.createPipeline = function (credential) {
-        var isAnonymousCreds = credential instanceof AnonymousCredential;
-        var policyFactoryLength = 3 + (isAnonymousCreds ? 0 : 1); // [deserializationPolicy, BatchHeaderFilterPolicyFactory, (Optional)Credential, BatchRequestAssemblePolicyFactory]
-        var factories = new Array(policyFactoryLength);
+    createPipeline(credential) {
+        const isAnonymousCreds = credential instanceof AnonymousCredential;
+        const policyFactoryLength = 3 + (isAnonymousCreds ? 0 : 1); // [deserializationPolicy, BatchHeaderFilterPolicyFactory, (Optional)Credential, BatchRequestAssemblePolicyFactory]
+        const factories = new Array(policyFactoryLength);
         factories[0] = coreHttp.deserializationPolicy(); // Default deserializationPolicy is provided by protocol layer
         factories[1] = new BatchHeaderFilterPolicyFactory(); // Use batch header filter policy to exclude unnecessary headers
         if (!isAnonymousCreds) {
@@ -39273,117 +36510,93 @@ var InnerBatchRequest = /** @class */ (function () {
         }
         factories[policyFactoryLength - 1] = new BatchRequestAssemblePolicyFactory(this); // Use batch assemble policy to assemble request and intercept request from going to wire
         return new Pipeline(factories, {});
-    };
-    InnerBatchRequest.prototype.appendSubRequestToBody = function (request) {
+    }
+    appendSubRequestToBody(request) {
         // Start to assemble sub request
         this.body += [
             this.subRequestPrefix,
-            HeaderConstants.CONTENT_ID + ": " + this.operationCount,
+            `${HeaderConstants.CONTENT_ID}: ${this.operationCount}`,
             "",
-            request.method.toString() + " " + getURLPathAndQuery(request.url) + " " + HTTP_VERSION_1_1 + HTTP_LINE_ENDING // sub request start line with method
+            `${request.method.toString()} ${getURLPathAndQuery(request.url)} ${HTTP_VERSION_1_1}${HTTP_LINE_ENDING}` // sub request start line with method
         ].join(HTTP_LINE_ENDING);
-        for (var _i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
-            var header = _a[_i];
-            this.body += header.name + ": " + header.value + HTTP_LINE_ENDING;
+        for (const header of request.headers.headersArray()) {
+            this.body += `${header.name}: ${header.value}${HTTP_LINE_ENDING}`;
         }
         this.body += HTTP_LINE_ENDING; // sub request's headers need be ending with an empty line
         // No body to assemble for current batch request support
         // End to assemble sub request
-    };
-    InnerBatchRequest.prototype.preAddSubRequest = function (subRequest) {
+    }
+    preAddSubRequest(subRequest) {
         if (this.operationCount >= BATCH_MAX_REQUEST) {
-            throw new RangeError("Cannot exceed " + BATCH_MAX_REQUEST + " sub requests in a single batch");
+            throw new RangeError(`Cannot exceed ${BATCH_MAX_REQUEST} sub requests in a single batch`);
         }
         // Fast fail if url for sub request is invalid
-        var path = getURLPath(subRequest.url);
+        const path = getURLPath(subRequest.url);
         if (!path || path == "") {
-            throw new RangeError("Invalid url for sub request: '" + subRequest.url + "'");
+            throw new RangeError(`Invalid url for sub request: '${subRequest.url}'`);
         }
-    };
-    InnerBatchRequest.prototype.postAddSubRequest = function (subRequest) {
+    }
+    postAddSubRequest(subRequest) {
         this.subRequests.set(this.operationCount, subRequest);
         this.operationCount++;
-    };
+    }
     // Return the http request body with assembling the ending line to the sub request body.
-    InnerBatchRequest.prototype.getHttpRequestBody = function () {
-        return "" + this.body + this.batchRequestEnding + HTTP_LINE_ENDING;
-    };
-    InnerBatchRequest.prototype.getMultipartContentType = function () {
+    getHttpRequestBody() {
+        return `${this.body}${this.batchRequestEnding}${HTTP_LINE_ENDING}`;
+    }
+    getMultipartContentType() {
         return this.multipartContentType;
-    };
-    InnerBatchRequest.prototype.getSubRequests = function () {
+    }
+    getSubRequests() {
         return this.subRequests;
-    };
-    return InnerBatchRequest;
-}());
-var BatchRequestAssemblePolicy = /** @class */ (function (_super) {
-    tslib.__extends(BatchRequestAssemblePolicy, _super);
-    function BatchRequestAssemblePolicy(batchRequest, nextPolicy, options) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.dummyResponse = {
+    }
+}
+class BatchRequestAssemblePolicy extends coreHttp.BaseRequestPolicy {
+    constructor(batchRequest, nextPolicy, options) {
+        super(nextPolicy, options);
+        this.dummyResponse = {
             request: new coreHttp.WebResource(),
             status: 200,
             headers: new coreHttp.HttpHeaders()
         };
-        _this.batchRequest = batchRequest;
-        return _this;
-    }
-    BatchRequestAssemblePolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, this.batchRequest.appendSubRequestToBody(request)];
-                    case 1:
-                        _a.sent();
-                        return [2 /*return*/, this.dummyResponse]; // Intercept request from going to wire
-                }
-            });
-        });
-    };
-    return BatchRequestAssemblePolicy;
-}(coreHttp.BaseRequestPolicy));
-var BatchRequestAssemblePolicyFactory = /** @class */ (function () {
-    function BatchRequestAssemblePolicyFactory(batchRequest) {
         this.batchRequest = batchRequest;
     }
-    BatchRequestAssemblePolicyFactory.prototype.create = function (nextPolicy, options) {
+    async sendRequest(request) {
+        await this.batchRequest.appendSubRequestToBody(request);
+        return this.dummyResponse; // Intercept request from going to wire
+    }
+}
+class BatchRequestAssemblePolicyFactory {
+    constructor(batchRequest) {
+        this.batchRequest = batchRequest;
+    }
+    create(nextPolicy, options) {
         return new BatchRequestAssemblePolicy(this.batchRequest, nextPolicy, options);
-    };
-    return BatchRequestAssemblePolicyFactory;
-}());
-var BatchHeaderFilterPolicy = /** @class */ (function (_super) {
-    tslib.__extends(BatchHeaderFilterPolicy, _super);
-    function BatchHeaderFilterPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
     }
-    BatchHeaderFilterPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var xMsHeaderName, _i, _a, header;
-            return tslib.__generator(this, function (_b) {
-                xMsHeaderName = "";
-                for (_i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
-                    header = _a[_i];
-                    if (iEqual(header.name, HeaderConstants.X_MS_VERSION)) {
-                        xMsHeaderName = header.name;
-                    }
-                }
-                if (xMsHeaderName !== "") {
-                    request.headers.remove(xMsHeaderName); // The subrequests should not have the x-ms-version header.
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return BatchHeaderFilterPolicy;
-}(coreHttp.BaseRequestPolicy));
-var BatchHeaderFilterPolicyFactory = /** @class */ (function () {
-    function BatchHeaderFilterPolicyFactory() {
+}
+class BatchHeaderFilterPolicy extends coreHttp.BaseRequestPolicy {
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
-    BatchHeaderFilterPolicyFactory.prototype.create = function (nextPolicy, options) {
+    async sendRequest(request) {
+        let xMsHeaderName = "";
+        for (const header of request.headers.headersArray()) {
+            if (iEqual(header.name, HeaderConstants.X_MS_VERSION)) {
+                xMsHeaderName = header.name;
+            }
+        }
+        if (xMsHeaderName !== "") {
+            request.headers.remove(xMsHeaderName); // The subrequests should not have the x-ms-version header.
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
+class BatchHeaderFilterPolicyFactory {
+    constructor() { }
+    create(nextPolicy, options) {
         return new BatchHeaderFilterPolicy(nextPolicy, options);
-    };
-    return BatchHeaderFilterPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -39391,9 +36604,9 @@ var BatchHeaderFilterPolicyFactory = /** @class */ (function () {
  *
  * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
  */
-var BlobBatchClient = /** @class */ (function () {
-    function BlobBatchClient(url, credentialOrPipeline, options) {
-        var pipeline;
+class BlobBatchClient {
+    constructor(url, credentialOrPipeline, options) {
+        let pipeline;
         if (credentialOrPipeline instanceof Pipeline) {
             pipeline = credentialOrPipeline;
         }
@@ -39404,8 +36617,8 @@ var BlobBatchClient = /** @class */ (function () {
         else {
             pipeline = newPipeline(credentialOrPipeline, options);
         }
-        var storageClientContext = new StorageClientContext(url, pipeline.toServiceClientOptions());
-        var path = getURLPath(url);
+        const storageClientContext = new StorageClientContext(url, pipeline.toServiceClientOptions());
+        const path = getURLPath(url);
         if (path && path !== "/") {
             // Container scoped.
             this.serviceOrContainerContext = new Container(storageClientContext);
@@ -39418,67 +36631,33 @@ var BlobBatchClient = /** @class */ (function () {
      * Creates a {@link BlobBatch}.
      * A BlobBatch represents an aggregated set of operations on blobs.
      */
-    BlobBatchClient.prototype.createBatch = function () {
+    createBatch() {
         return new BlobBatch();
-    };
-    BlobBatchClient.prototype.deleteBlobs = function (urlsOrBlobClients, credentialOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var batch, _i, urlsOrBlobClients_1, urlOrBlobClient;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        batch = new BlobBatch();
-                        _i = 0, urlsOrBlobClients_1 = urlsOrBlobClients;
-                        _a.label = 1;
-                    case 1:
-                        if (!(_i < urlsOrBlobClients_1.length)) return [3 /*break*/, 6];
-                        urlOrBlobClient = urlsOrBlobClients_1[_i];
-                        if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
-                        return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 5];
-                    case 3: return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions)];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 6: return [2 /*return*/, this.submitBatch(batch)];
-                }
-            });
-        });
-    };
-    BlobBatchClient.prototype.setBlobsAccessTier = function (urlsOrBlobClients, credentialOrTier, tierOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var batch, _i, urlsOrBlobClients_2, urlOrBlobClient;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        batch = new BlobBatch();
-                        _i = 0, urlsOrBlobClients_2 = urlsOrBlobClients;
-                        _a.label = 1;
-                    case 1:
-                        if (!(_i < urlsOrBlobClients_2.length)) return [3 /*break*/, 6];
-                        urlOrBlobClient = urlsOrBlobClients_2[_i];
-                        if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
-                        return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 5];
-                    case 3: return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions)];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 6: return [2 /*return*/, this.submitBatch(batch)];
-                }
-            });
-        });
-    };
+    }
+    async deleteBlobs(urlsOrBlobClients, credentialOrOptions, options) {
+        const batch = new BlobBatch();
+        for (const urlOrBlobClient of urlsOrBlobClients) {
+            if (typeof urlOrBlobClient === "string") {
+                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options);
+            }
+            else {
+                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions);
+            }
+        }
+        return this.submitBatch(batch);
+    }
+    async setBlobsAccessTier(urlsOrBlobClients, credentialOrTier, tierOrOptions, options) {
+        const batch = new BlobBatch();
+        for (const urlOrBlobClient of urlsOrBlobClients) {
+            if (typeof urlOrBlobClient === "string") {
+                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options);
+            }
+            else {
+                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions);
+            }
+        }
+        return this.submitBatch(batch);
+    }
     /**
      * Submit batch request which consists of multiple subrequests.
      *
@@ -39514,67 +36693,51 @@ var BlobBatchClient = /** @class */ (function () {
      * @param batchRequest - A set of Delete or SetTier operations.
      * @param options -
      */
-    BlobBatchClient.prototype.submitBatch = function (batchRequest, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, batchRequestBody, rawBatchResponse, batchResponseParser, responseSummary, res, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!batchRequest || batchRequest.getSubRequests().size == 0) {
-                            throw new RangeError("Batch request should contain one or more sub requests.");
-                        }
-                        _a = createSpan("BlobBatchClient-submitBatch", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        batchRequestBody = batchRequest.getHttpRequestBody();
-                        return [4 /*yield*/, this.serviceOrContainerContext.submitBatch(utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), batchRequestBody, tslib.__assign(tslib.__assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        rawBatchResponse = _b.sent();
-                        batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());
-                        return [4 /*yield*/, batchResponseParser.parseBatchResponse()];
-                    case 3:
-                        responseSummary = _b.sent();
-                        res = {
-                            _response: rawBatchResponse._response,
-                            contentType: rawBatchResponse.contentType,
-                            errorCode: rawBatchResponse.errorCode,
-                            requestId: rawBatchResponse.requestId,
-                            clientRequestId: rawBatchResponse.clientRequestId,
-                            version: rawBatchResponse.version,
-                            subResponses: responseSummary.subResponses,
-                            subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,
-                            subResponsesFailedCount: responseSummary.subResponsesFailedCount
-                        };
-                        return [2 /*return*/, res];
-                    case 4:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
+    async submitBatch(batchRequest, options = {}) {
+        if (!batchRequest || batchRequest.getSubRequests().size == 0) {
+            throw new RangeError("Batch request should contain one or more sub requests.");
+        }
+        const { span, updatedOptions } = createSpan("BlobBatchClient-submitBatch", options);
+        try {
+            const batchRequestBody = batchRequest.getHttpRequestBody();
+            // ServiceSubmitBatchResponseModel and ContainerSubmitBatchResponse are compatible for now.
+            const rawBatchResponse = await this.serviceOrContainerContext.submitBatch(utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), batchRequestBody, Object.assign(Object.assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            // Parse the sub responses result, if logic reaches here(i.e. the batch request succeeded with status code 202).
+            const batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());
+            const responseSummary = await batchResponseParser.parseBatchResponse();
+            const res = {
+                _response: rawBatchResponse._response,
+                contentType: rawBatchResponse.contentType,
+                errorCode: rawBatchResponse.errorCode,
+                requestId: rawBatchResponse.requestId,
+                clientRequestId: rawBatchResponse.clientRequestId,
+                version: rawBatchResponse.version,
+                subResponses: responseSummary.subResponses,
+                subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,
+                subResponsesFailedCount: responseSummary.subResponsesFailedCount
+            };
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlobBatchClient;
-}());
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 
 /**
  * A ContainerClient represents a URL to the Azure Storage container allowing you to manipulate its blobs.
  */
-var ContainerClient = /** @class */ (function (_super) {
-    tslib.__extends(ContainerClient, _super);
-    function ContainerClient(urlOrConnectionString, credentialOrPipelineOrContainerName, options) {
-        var _this = this;
-        var pipeline;
-        var url;
+class ContainerClient extends StorageClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, options) {
+        let pipeline;
+        let url;
         options = options || {};
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
@@ -39598,11 +36761,11 @@ var ContainerClient = /** @class */ (function (_super) {
         else if (credentialOrPipelineOrContainerName &&
             typeof credentialOrPipelineOrContainerName === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(extractedCreds.url, encodeURIComponent(containerName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -39622,21 +36785,16 @@ var ContainerClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName parameter");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this._containerName = _this.getContainerNameFromUrl();
-        _this.containerContext = new Container(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this._containerName = this.getContainerNameFromUrl();
+        this.containerContext = new Container(this.storageClientContext);
+    }
+    /**
+     * The name of the container.
+     */
+    get containerName() {
+        return this._containerName;
     }
-    Object.defineProperty(ContainerClient.prototype, "containerName", {
-        /**
-         * The name of the container.
-         */
-        get: function () {
-            return this._containerName;
-        },
-        enumerable: false,
-        configurable: true
-    });
     /**
      * Creates a new container under the specified account. If the container with
      * the same name already exists, the operation fails.
@@ -39653,37 +36811,24 @@ var ContainerClient = /** @class */ (function (_super) {
      * console.log("Container was created successfully", createContainerResponse.requestId);
      * ```
      */
-    ContainerClient.prototype.create = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-create", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.create(tslib.__assign(tslib.__assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: 
-                    // Spread operator in destructuring assignments,
-                    // this will filter out unwanted properties from the response object into result object
-                    return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async create(options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-create", options);
+        try {
+            // Spread operator in destructuring assignments,
+            // this will filter out unwanted properties from the response object into result object
+            return await this.containerContext.create(Object.assign(Object.assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new container under the specified account. If the container with
      * the same name already exists, it is not changed.
@@ -39691,45 +36836,32 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options -
      */
-    ContainerClient.prototype.createIfNotExists = function (options) {
+    async createIfNotExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, res, e_2;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("ContainerClient-createIfNotExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.create(updatedOptions)];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_2 = _d.sent();
-                        if (((_a = e_2.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when creating a container only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_2.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_2.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("ContainerClient-createIfNotExists", options);
+        try {
+            const res = await this.create(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a container only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns true if the Azure container resource represented by this client exists; false otherwise.
      *
@@ -39739,63 +36871,50 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options -
      */
-    ContainerClient.prototype.exists = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_3;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-exists", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.getProperties({
-                                abortSignal: options.abortSignal,
-                                tracingOptions: updatedOptions.tracingOptions
-                            })];
-                    case 2:
-                        _b.sent();
-                        return [2 /*return*/, true];
-                    case 3:
-                        e_3 = _b.sent();
-                        if (e_3.statusCode === 404) {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when checking container existence"
-                            });
-                            return [2 /*return*/, false];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async exists(options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-exists", options);
+        try {
+            await this.getProperties({
+                abortSignal: options.abortSignal,
+                tracingOptions: updatedOptions.tracingOptions
             });
-        });
-    };
+            return true;
+        }
+        catch (e) {
+            if (e.statusCode === 404) {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when checking container existence"
+                });
+                return false;
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a {@link BlobClient}
      *
      * @param blobName - A blob name
      * @returns A new BlobClient object for the given blob name.
      */
-    ContainerClient.prototype.getBlobClient = function (blobName) {
+    getBlobClient(blobName) {
         return new BlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates an {@link AppendBlobClient}
      *
      * @param blobName - An append blob name
      */
-    ContainerClient.prototype.getAppendBlobClient = function (blobName) {
+    getAppendBlobClient(blobName) {
         return new AppendBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates a {@link BlockBlobClient}
      *
@@ -39811,17 +36930,17 @@ var ContainerClient = /** @class */ (function (_super) {
      * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
      * ```
      */
-    ContainerClient.prototype.getBlockBlobClient = function (blobName) {
+    getBlockBlobClient(blobName) {
         return new BlockBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates a {@link PageBlobClient}
      *
      * @param blobName - A page blob name
      */
-    ContainerClient.prototype.getPageBlobClient = function (blobName) {
+    getPageBlobClient(blobName) {
         return new PageBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Returns all user-defined metadata and system properties for the specified
      * container. The data returned does not include the container's list of blobs.
@@ -39834,37 +36953,25 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options - Options to Container Get Properties operation.
      */
-    ContainerClient.prototype.getProperties = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_4;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-getProperties", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.getProperties(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal }, options.conditions), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_4 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getProperties(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-getProperties", options);
+        try {
+            return await this.containerContext.getProperties(Object.assign(Object.assign({ abortSignal: options.abortSignal }, options.conditions), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified container for deletion. The container and any blobs
      * contained within it are later deleted during garbage collection.
@@ -39872,37 +36979,25 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options - Options to Container Delete operation.
      */
-    ContainerClient.prototype.delete = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_5;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-delete", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.delete(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_5 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async delete(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-delete", options);
+        try {
+            return await this.containerContext.delete(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified container for deletion if it exists. The container and any blobs
      * contained within it are later deleted during garbage collection.
@@ -39910,45 +37005,32 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options - Options to Container Delete operation.
      */
-    ContainerClient.prototype.deleteIfExists = function (options) {
+    async deleteIfExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, res, e_6;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("ContainerClient-deleteIfExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.delete(updatedOptions)];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_6 = _d.sent();
-                        if (((_a = e_6.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when deleting a container only if it exists."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_6.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_6.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("ContainerClient-deleteIfExists", options);
+        try {
+            const res = await this.delete(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when deleting a container only if it exists."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets one or more user-defined name-value pairs for the specified container.
      *
@@ -39961,40 +37043,28 @@ var ContainerClient = /** @class */ (function (_super) {
      *                            If no value provided the existing metadata will be removed.
      * @param options - Options to Container Set Metadata operation.
      */
-    ContainerClient.prototype.setMetadata = function (metadata, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_7;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        if (options.conditions.ifUnmodifiedSince) {
-                            throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service");
-                        }
-                        _a = createSpan("ContainerClient-setMetadata", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.setMetadata(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: metadata, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_7 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setMetadata(metadata, options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        if (options.conditions.ifUnmodifiedSince) {
+            throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service");
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-setMetadata", options);
+        try {
+            return await this.containerContext.setMetadata(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the permissions for the specified container. The permissions indicate
      * whether container data may be accessed publicly.
@@ -40006,70 +37076,56 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options - Options to Container Get Access Policy operation.
      */
-    ContainerClient.prototype.getAccessPolicy = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, res, _i, response_1, identifier, accessPolicy, e_8;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-getAccessPolicy", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.getAccessPolicy(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        res = {
-                            _response: response._response,
-                            blobPublicAccess: response.blobPublicAccess,
-                            date: response.date,
-                            etag: response.etag,
-                            errorCode: response.errorCode,
-                            lastModified: response.lastModified,
-                            requestId: response.requestId,
-                            clientRequestId: response.clientRequestId,
-                            signedIdentifiers: [],
-                            version: response.version
-                        };
-                        for (_i = 0, response_1 = response; _i < response_1.length; _i++) {
-                            identifier = response_1[_i];
-                            accessPolicy = undefined;
-                            if (identifier.accessPolicy) {
-                                accessPolicy = {
-                                    permissions: identifier.accessPolicy.permissions
-                                };
-                                if (identifier.accessPolicy.expiresOn) {
-                                    accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
-                                }
-                                if (identifier.accessPolicy.startsOn) {
-                                    accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);
-                                }
-                            }
-                            res.signedIdentifiers.push({
-                                accessPolicy: accessPolicy,
-                                id: identifier.id
-                            });
-                        }
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_8 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
+    async getAccessPolicy(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-getAccessPolicy", options);
+        try {
+            const response = await this.containerContext.getAccessPolicy(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const res = {
+                _response: response._response,
+                blobPublicAccess: response.blobPublicAccess,
+                date: response.date,
+                etag: response.etag,
+                errorCode: response.errorCode,
+                lastModified: response.lastModified,
+                requestId: response.requestId,
+                clientRequestId: response.clientRequestId,
+                signedIdentifiers: [],
+                version: response.version
+            };
+            for (const identifier of response) {
+                let accessPolicy = undefined;
+                if (identifier.accessPolicy) {
+                    accessPolicy = {
+                        permissions: identifier.accessPolicy.permissions
+                    };
+                    if (identifier.accessPolicy.expiresOn) {
+                        accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
+                    }
+                    if (identifier.accessPolicy.startsOn) {
+                        accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);
+                    }
                 }
+                res.signedIdentifiers.push({
+                    accessPolicy,
+                    id: identifier.id
+                });
+            }
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets the permissions for the specified container. The permissions indicate
      * whether blobs in a container may be accessed publicly.
@@ -40087,60 +37143,47 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param containerAcl - Array of elements each having a unique Id and details of the access policy.
      * @param options - Options to Container Set Access Policy operation.
      */
-    ContainerClient.prototype.setAccessPolicy = function (access, containerAcl, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, acl, _i, _b, identifier, e_9;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _a = createSpan("ContainerClient-setAccessPolicy", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        acl = [];
-                        for (_i = 0, _b = containerAcl || []; _i < _b.length; _i++) {
-                            identifier = _b[_i];
-                            acl.push({
-                                accessPolicy: {
-                                    expiresOn: identifier.accessPolicy.expiresOn
-                                        ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)
-                                        : "",
-                                    permissions: identifier.accessPolicy.permissions,
-                                    startsOn: identifier.accessPolicy.startsOn
-                                        ? truncatedISO8061Date(identifier.accessPolicy.startsOn)
-                                        : ""
-                                },
-                                id: identifier.id
-                            });
-                        }
-                        return [4 /*yield*/, this.containerContext.setAccessPolicy(tslib.__assign({ abortSignal: options.abortSignal, access: access, containerAcl: acl, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_9 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_9.message
-                        });
-                        throw e_9;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setAccessPolicy(access, containerAcl, options = {}) {
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("ContainerClient-setAccessPolicy", options);
+        try {
+            const acl = [];
+            for (const identifier of containerAcl || []) {
+                acl.push({
+                    accessPolicy: {
+                        expiresOn: identifier.accessPolicy.expiresOn
+                            ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)
+                            : "",
+                        permissions: identifier.accessPolicy.permissions,
+                        startsOn: identifier.accessPolicy.startsOn
+                            ? truncatedISO8061Date(identifier.accessPolicy.startsOn)
+                            : ""
+                    },
+                    id: identifier.id
+                });
+            }
+            return await this.containerContext.setAccessPolicy(Object.assign({ abortSignal: options.abortSignal, access, containerAcl: acl, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Get a {@link BlobLeaseClient} that manages leases on the container.
      *
      * @param proposeLeaseId - Initial proposed lease Id.
      * @returns A new BlobLeaseClient object for managing leases on the container.
      */
-    ContainerClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
+    getBlobLeaseClient(proposeLeaseId) {
         return new BlobLeaseClient(this, proposeLeaseId);
-    };
+    }
     /**
      * Creates a new block blob, or updates the content of an existing block blob.
      *
@@ -40163,40 +37206,27 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param options - Options to configure the Block Blob Upload operation.
      * @returns Block Blob upload response data and the corresponding BlockBlobClient instance.
      */
-    ContainerClient.prototype.uploadBlockBlob = function (blobName, body, contentLength, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, blockBlobClient, response, e_10;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-uploadBlockBlob", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        blockBlobClient = this.getBlockBlobClient(blobName);
-                        return [4 /*yield*/, blockBlobClient.upload(body, contentLength, updatedOptions)];
-                    case 2:
-                        response = _b.sent();
-                        return [2 /*return*/, {
-                                blockBlobClient: blockBlobClient,
-                                response: response
-                            }];
-                    case 3:
-                        e_10 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_10.message
-                        });
-                        throw e_10;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async uploadBlockBlob(blobName, body, contentLength, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-uploadBlockBlob", options);
+        try {
+            const blockBlobClient = this.getBlockBlobClient(blobName);
+            const response = await blockBlobClient.upload(body, contentLength, updatedOptions);
+            return {
+                blockBlobClient,
+                response
+            };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -40208,38 +37238,26 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param options - Options to Blob Delete operation.
      * @returns Block blob deletion response data.
      */
-    ContainerClient.prototype.deleteBlob = function (blobName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, blobClient, e_11;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-deleteBlob", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        blobClient = this.getBlobClient(blobName);
-                        if (options.versionId) {
-                            blobClient = blobClient.withVersion(options.versionId);
-                        }
-                        return [4 /*yield*/, blobClient.delete(updatedOptions)];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_11 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_11.message
-                        });
-                        throw e_11;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async deleteBlob(blobName, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-deleteBlob", options);
+        try {
+            let blobClient = this.getBlobClient(blobName);
+            if (options.versionId) {
+                blobClient = blobClient.withVersion(options.versionId);
+            }
+            return await blobClient.delete(updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * listBlobFlatSegment returns a single segment of blobs starting from the
      * specified Marker. Use an empty Marker to start enumeration from the beginning.
@@ -40250,40 +37268,27 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
      * @param options - Options to Container List Blob Flat Segment operation.
      */
-    ContainerClient.prototype.listBlobFlatSegment = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, wrappedResponse, e_12;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-listBlobFlatSegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.listBlobFlatSegment(tslib.__assign(tslib.__assign({ marker: marker }, options), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
-                                    var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
-                                    return blobItem;
-                                }) }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_12 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_12.message
-                        });
-                        throw e_12;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listBlobFlatSegment(marker, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-listBlobFlatSegment", options);
+        try {
+            const response = await this.containerContext.listBlobFlatSegment(Object.assign(Object.assign({ marker }, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInteral) => {
+                        const blobItem = Object.assign(Object.assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
+                        return blobItem;
+                    }) }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * listBlobHierarchySegment returns a single segment of blobs starting from
      * the specified Marker. Use an empty Marker to start enumeration from the
@@ -40295,40 +37300,27 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
      * @param options - Options to Container List Blob Hierarchy Segment operation.
      */
-    ContainerClient.prototype.listBlobHierarchySegment = function (delimiter, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, wrappedResponse, e_13;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-listBlobHierarchySegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.listBlobHierarchySegment(delimiter, tslib.__assign(tslib.__assign({ marker: marker }, options), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
-                                    var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
-                                    return blobItem;
-                                }) }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_13 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_13.message
-                        });
-                        throw e_13;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listBlobHierarchySegment(delimiter, marker, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-listBlobHierarchySegment", options);
+        try {
+            const response = await this.containerContext.listBlobHierarchySegment(delimiter, Object.assign(Object.assign({ marker }, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInteral) => {
+                        const blobItem = Object.assign(Object.assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
+                        return blobItem;
+                    }) }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns an AsyncIterableIterator for ContainerListBlobFlatSegmentResponse
      *
@@ -40341,81 +37333,42 @@ var ContainerClient = /** @class */ (function (_super) {
      *                          items. The marker value is opaque to the client.
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listSegments = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
-            var listBlobsFlatSegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listBlobFlatSegment(marker, options))];
-                    case 2:
-                        listBlobsFlatSegmentResponse = _a.sent();
-                        marker = listBlobsFlatSegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listBlobsFlatSegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listSegments(marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listSegments_1() {
+            let listBlobsFlatSegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listBlobsFlatSegmentResponse = yield tslib.__await(this.listBlobFlatSegment(marker, options));
+                    marker = listBlobsFlatSegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listBlobsFlatSegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator of {@link BlobItem} objects
      *
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listItems = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItems_1() {
-            var marker, _a, _b, listBlobsFlatSegmentResponse, e_14_1;
-            var e_14, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.listSegments(marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        listBlobsFlatSegmentResponse = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_14_1 = _d.sent();
-                        e_14 = { error: e_14_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_14) throw e_14.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    listItems(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItems_1() {
+            var e_1, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listSegments(marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const listBlobsFlatSegmentResponse = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)));
                 }
-            });
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the blobs
      * under the specified account.
@@ -40486,11 +37439,8 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param options - Options to list blobs.
      * @returns An asyncIterableIterator that supports paging.
      */
-    ContainerClient.prototype.listBlobsFlat = function (options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
-        var include = [];
+    listBlobsFlat(options = {}) {
+        const include = [];
         if (options.includeCopy) {
             include.push("copy");
         }
@@ -40515,32 +37465,30 @@ var ContainerClient = /** @class */ (function (_super) {
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
+        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));
         // AsyncIterableIterator to iterate over blobs
-        var iter = this.listItems(updatedOptions);
-        return _a = {
-                /**
-                 * The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const iter = this.listItems(updatedOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
              * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
              * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
+            }
+        };
+    }
     /**
      * Returns an AsyncIterableIterator for ContainerListBlobHierarchySegmentResponse
      *
@@ -40554,106 +37502,51 @@ var ContainerClient = /** @class */ (function (_super) {
      *                          items. The marker value is opaque to the client.
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listHierarchySegments = function (delimiter, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listHierarchySegments_1() {
-            var listBlobsHierarchySegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listBlobHierarchySegment(delimiter, marker, options))];
-                    case 2:
-                        listBlobsHierarchySegmentResponse = _a.sent();
-                        marker = listBlobsHierarchySegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listBlobsHierarchySegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listHierarchySegments(delimiter, marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listHierarchySegments_1() {
+            let listBlobsHierarchySegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listBlobsHierarchySegmentResponse = yield tslib.__await(this.listBlobHierarchySegment(delimiter, marker, options));
+                    marker = listBlobsHierarchySegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listBlobsHierarchySegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for {@link BlobPrefix} and {@link BlobItem} objects.
      *
      * @param delimiter - The character or string used to define the virtual hierarchy
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listItemsByHierarchy = function (delimiter, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItemsByHierarchy_1() {
-            var marker, _a, _b, listBlobsHierarchySegmentResponse, segment, _i, _c, prefix, _d, _e, blob, e_15_1;
-            var e_15, _f;
-            return tslib.__generator(this, function (_g) {
-                switch (_g.label) {
-                    case 0:
-                        _g.trys.push([0, 14, 15, 20]);
-                        _a = tslib.__asyncValues(this.listHierarchySegments(delimiter, marker, options));
-                        _g.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _g.sent(), !_b.done)) return [3 /*break*/, 13];
-                        listBlobsHierarchySegmentResponse = _b.value;
-                        segment = listBlobsHierarchySegmentResponse.segment;
-                        if (!segment.blobPrefixes) return [3 /*break*/, 7];
-                        _i = 0, _c = segment.blobPrefixes;
-                        _g.label = 3;
-                    case 3:
-                        if (!(_i < _c.length)) return [3 /*break*/, 7];
-                        prefix = _c[_i];
-                        return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "prefix" }, prefix))];
-                    case 4: return [4 /*yield*/, _g.sent()];
-                    case 5:
-                        _g.sent();
-                        _g.label = 6;
-                    case 6:
-                        _i++;
-                        return [3 /*break*/, 3];
-                    case 7:
-                        _d = 0, _e = segment.blobItems;
-                        _g.label = 8;
-                    case 8:
-                        if (!(_d < _e.length)) return [3 /*break*/, 12];
-                        blob = _e[_d];
-                        return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "blob" }, blob))];
-                    case 9: return [4 /*yield*/, _g.sent()];
-                    case 10:
-                        _g.sent();
-                        _g.label = 11;
-                    case 11:
-                        _d++;
-                        return [3 /*break*/, 8];
-                    case 12: return [3 /*break*/, 1];
-                    case 13: return [3 /*break*/, 20];
-                    case 14:
-                        e_15_1 = _g.sent();
-                        e_15 = { error: e_15_1 };
-                        return [3 /*break*/, 20];
-                    case 15:
-                        _g.trys.push([15, , 18, 19]);
-                        if (!(_b && !_b.done && (_f = _a.return))) return [3 /*break*/, 17];
-                        return [4 /*yield*/, tslib.__await(_f.call(_a))];
-                    case 16:
-                        _g.sent();
-                        _g.label = 17;
-                    case 17: return [3 /*break*/, 19];
-                    case 18:
-                        if (e_15) throw e_15.error;
-                        return [7 /*endfinally*/];
-                    case 19: return [7 /*endfinally*/];
-                    case 20: return [2 /*return*/];
+    listItemsByHierarchy(delimiter, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItemsByHierarchy_1() {
+            var e_2, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listHierarchySegments(delimiter, marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const listBlobsHierarchySegmentResponse = _c.value;
+                    const segment = listBlobsHierarchySegmentResponse.segment;
+                    if (segment.blobPrefixes) {
+                        for (const prefix of segment.blobPrefixes) {
+                            yield yield tslib.__await(Object.assign({ kind: "prefix" }, prefix));
+                        }
+                    }
+                    for (const blob of segment.blobItems) {
+                        yield yield tslib.__await(Object.assign({ kind: "blob" }, blob));
+                    }
                 }
-            });
+            }
+            catch (e_2_1) { e_2 = { error: e_2_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_2) throw e_2.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the blobs by hierarchy.
      * under the specified account.
@@ -40730,14 +37623,11 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param delimiter - The character or string used to define the virtual hierarchy
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listBlobsByHierarchy = function (delimiter, options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    listBlobsByHierarchy(delimiter, options = {}) {
         if (delimiter === "") {
             throw new RangeError("delimiter should contain one or more characters");
         }
-        var include = [];
+        const include = [];
         if (options.includeCopy) {
             include.push("copy");
         }
@@ -40762,45 +37652,39 @@ var ContainerClient = /** @class */ (function (_super) {
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
+        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));
         // AsyncIterableIterator to iterate over blob prefixes and blobs
-        var iter = this.listItemsByHierarchy(delimiter, updatedOptions);
-        return _a = {
-                /**
-                 * The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return tslib.__awaiter(this, void 0, void 0, function () {
-                        return tslib.__generator(this, function (_a) {
-                            return [2 /*return*/, iter.next()];
-                        });
-                    });
-                }
+        const iter = this.listItemsByHierarchy(delimiter, updatedOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            async next() {
+                return iter.next();
             },
             /**
              * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
              * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listHierarchySegments(delimiter, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
-            },
-            _a;
-    };
-    ContainerClient.prototype.getContainerNameFromUrl = function () {
-        var containerName;
+            byPage: (settings = {}) => {
+                return this.listHierarchySegments(delimiter, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
+            }
+        };
+    }
+    getContainerNameFromUrl() {
+        let containerName;
         try {
             //  URL may look like the following
             // "https://myaccount.blob.core.windows.net/mycontainer?sasString";
             // "https://myaccount.blob.core.windows.net/mycontainer";
             // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername`
             // http://localhost:10001/devstoreaccount1/containername
-            var parsedUrl = coreHttp.URLBuilder.parse(this.url);
+            const parsedUrl = coreHttp.URLBuilder.parse(this.url);
             if (parsedUrl.getHost().split(".")[1] === "blob") {
                 // "https://myaccount.blob.core.windows.net/containername".
                 // "https://customdomain.com/containername".
@@ -40828,7 +37712,7 @@ var ContainerClient = /** @class */ (function (_super) {
         catch (error) {
             throw new Error("Unable to extract containerName with provided information.");
         }
-    };
+    }
     /**
      * Only available for ContainerClient constructed with a shared key credential.
      *
@@ -40840,16 +37724,15 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param options - Optional parameters.
      * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
      */
-    ContainerClient.prototype.generateSasUrl = function (options) {
-        var _this = this;
-        return new Promise(function (resolve) {
-            if (!(_this.credential instanceof StorageSharedKeyCredential)) {
+    generateSasUrl(options) {
+        return new Promise((resolve) => {
+            if (!(this.credential instanceof StorageSharedKeyCredential)) {
                 throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
             }
-            var sas = generateBlobSASQueryParameters(tslib.__assign({ containerName: _this._containerName }, options), _this.credential).toString();
-            resolve(appendToURLQuery(_this.url, sas));
+            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName }, options), this.credential).toString();
+            resolve(appendToURLQuery(this.url, sas));
         });
-    };
+    }
     /**
      * Creates a BlobBatchClient object to conduct batch operations.
      *
@@ -40857,11 +37740,10 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @returns A new BlobBatchClient object for this container.
      */
-    ContainerClient.prototype.getBlobBatchClient = function () {
+    getBlobBatchClient() {
         return new BlobBatchClient(this.url, this.pipeline);
-    };
-    return ContainerClient;
-}(StorageClient));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -40874,8 +37756,8 @@ var ContainerClient = /** @class */ (function (_super) {
  * {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but
  * the order of the permissions is particular and this class guarantees correctness.
  */
-var AccountSASPermissions = /** @class */ (function () {
-    function AccountSASPermissions() {
+class AccountSASPermissions {
+    constructor() {
         /**
          * Permission to read resources and list queues and tables granted.
          */
@@ -40926,10 +37808,9 @@ var AccountSASPermissions = /** @class */ (function () {
      *
      * @param permissions -
      */
-    AccountSASPermissions.parse = function (permissions) {
-        var accountSASPermissions = new AccountSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var c = permissions_1[_i];
+    static parse(permissions) {
+        const accountSASPermissions = new AccountSASPermissions();
+        for (const c of permissions) {
             switch (c) {
                 case "r":
                     accountSASPermissions.read = true;
@@ -40965,19 +37846,19 @@ var AccountSASPermissions = /** @class */ (function () {
                     accountSASPermissions.filter = true;
                     break;
                 default:
-                    throw new RangeError("Invalid permission character: " + c);
+                    throw new RangeError(`Invalid permission character: ${c}`);
             }
         }
         return accountSASPermissions;
-    };
+    }
     /**
      * Creates a {@link AccountSASPermissions} from a raw object which contains same keys as it
      * and boolean values for them.
      *
      * @param permissionLike -
      */
-    AccountSASPermissions.from = function (permissionLike) {
-        var accountSASPermissions = new AccountSASPermissions();
+    static from(permissionLike) {
+        const accountSASPermissions = new AccountSASPermissions();
         if (permissionLike.read) {
             accountSASPermissions.read = true;
         }
@@ -41012,7 +37893,7 @@ var AccountSASPermissions = /** @class */ (function () {
             accountSASPermissions.process = true;
         }
         return accountSASPermissions;
-    };
+    }
     /**
      * Produces the SAS permissions string for an Azure Storage account.
      * Call this method to set AccountSASSignatureValues Permissions field.
@@ -41023,11 +37904,11 @@ var AccountSASPermissions = /** @class */ (function () {
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
      *
      */
-    AccountSASPermissions.prototype.toString = function () {
+    toString() {
         // The order of the characters should be as specified here to ensure correctness:
         // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
         // Use a string array instead of string concatenating += operator for performance
-        var permissions = [];
+        const permissions = [];
         if (this.read) {
             permissions.push("r");
         }
@@ -41062,9 +37943,8 @@ var AccountSASPermissions = /** @class */ (function () {
             permissions.push("p");
         }
         return permissions.join("");
-    };
-    return AccountSASPermissions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -41077,8 +37957,8 @@ var AccountSASPermissions = /** @class */ (function () {
  * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but
  * the order of the resources is particular and this class guarantees correctness.
  */
-var AccountSASResourceTypes = /** @class */ (function () {
-    function AccountSASResourceTypes() {
+class AccountSASResourceTypes {
+    constructor() {
         /**
          * Permission to access service level APIs granted.
          */
@@ -41098,10 +37978,9 @@ var AccountSASResourceTypes = /** @class */ (function () {
      *
      * @param resourceTypes -
      */
-    AccountSASResourceTypes.parse = function (resourceTypes) {
-        var accountSASResourceTypes = new AccountSASResourceTypes();
-        for (var _i = 0, resourceTypes_1 = resourceTypes; _i < resourceTypes_1.length; _i++) {
-            var c = resourceTypes_1[_i];
+    static parse(resourceTypes) {
+        const accountSASResourceTypes = new AccountSASResourceTypes();
+        for (const c of resourceTypes) {
             switch (c) {
                 case "s":
                     accountSASResourceTypes.service = true;
@@ -41113,19 +37992,19 @@ var AccountSASResourceTypes = /** @class */ (function () {
                     accountSASResourceTypes.object = true;
                     break;
                 default:
-                    throw new RangeError("Invalid resource type: " + c);
+                    throw new RangeError(`Invalid resource type: ${c}`);
             }
         }
         return accountSASResourceTypes;
-    };
+    }
     /**
      * Converts the given resource types to a string.
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
      *
      */
-    AccountSASResourceTypes.prototype.toString = function () {
-        var resourceTypes = [];
+    toString() {
+        const resourceTypes = [];
         if (this.service) {
             resourceTypes.push("s");
         }
@@ -41136,9 +38015,8 @@ var AccountSASResourceTypes = /** @class */ (function () {
             resourceTypes.push("o");
         }
         return resourceTypes.join("");
-    };
-    return AccountSASResourceTypes;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -41151,8 +38029,8 @@ var AccountSASResourceTypes = /** @class */ (function () {
  * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but
  * the order of the services is particular and this class guarantees correctness.
  */
-var AccountSASServices = /** @class */ (function () {
-    function AccountSASServices() {
+class AccountSASServices {
+    constructor() {
         /**
          * Permission to access blob resources granted.
          */
@@ -41176,10 +38054,9 @@ var AccountSASServices = /** @class */ (function () {
      *
      * @param services -
      */
-    AccountSASServices.parse = function (services) {
-        var accountSASServices = new AccountSASServices();
-        for (var _i = 0, services_1 = services; _i < services_1.length; _i++) {
-            var c = services_1[_i];
+    static parse(services) {
+        const accountSASServices = new AccountSASServices();
+        for (const c of services) {
             switch (c) {
                 case "b":
                     accountSASServices.blob = true;
@@ -41194,17 +38071,17 @@ var AccountSASServices = /** @class */ (function () {
                     accountSASServices.table = true;
                     break;
                 default:
-                    throw new RangeError("Invalid service character: " + c);
+                    throw new RangeError(`Invalid service character: ${c}`);
             }
         }
         return accountSASServices;
-    };
+    }
     /**
      * Converts the given services to a string.
      *
      */
-    AccountSASServices.prototype.toString = function () {
-        var services = [];
+    toString() {
+        const services = [];
         if (this.blob) {
             services.push("b");
         }
@@ -41218,9 +38095,8 @@ var AccountSASServices = /** @class */ (function () {
             services.push("f");
         }
         return services.join("");
-    };
-    return AccountSASServices;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -41235,7 +38111,7 @@ var AccountSASServices = /** @class */ (function () {
  * @param sharedKeyCredential -
  */
 function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {
-    var version = accountSASSignatureValues.version
+    const version = accountSASSignatureValues.version
         ? accountSASSignatureValues.version
         : SERVICE_VERSION;
     if (accountSASSignatureValues.permissions &&
@@ -41253,10 +38129,10 @@ function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyC
         version < "2019-12-12") {
         throw RangeError("'version' must be >= '2019-12-12' when provided 'f' permission.");
     }
-    var parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());
-    var parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();
-    var parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();
-    var stringToSign = [
+    const parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());
+    const parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();
+    const parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();
+    const stringToSign = [
         sharedKeyCredential.accountName,
         parsedPermissions,
         parsedServices,
@@ -41270,7 +38146,7 @@ function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyC
         version,
         "" // Account SAS requires an additional newline character
     ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange);
 }
 
@@ -41278,11 +38154,9 @@ function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyC
  * A BlobServiceClient represents a Client to the Azure Storage Blob service allowing you
  * to manipulate blob containers.
  */
-var BlobServiceClient = /** @class */ (function (_super) {
-    tslib.__extends(BlobServiceClient, _super);
-    function BlobServiceClient(url, credentialOrPipeline, options) {
-        var _this = this;
-        var pipeline;
+class BlobServiceClient extends StorageClient {
+    constructor(url, credentialOrPipeline, options) {
+        let pipeline;
         if (credentialOrPipeline instanceof Pipeline) {
             pipeline = credentialOrPipeline;
         }
@@ -41295,9 +38169,8 @@ var BlobServiceClient = /** @class */ (function (_super) {
             // The second parameter is undefined. Use anonymous credential
             pipeline = newPipeline(new AnonymousCredential(), options);
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.serviceContext = new Service(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.serviceContext = new Service(this.storageClientContext);
     }
     /**
      *
@@ -41311,25 +38184,25 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                                  `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`
      * @param options - Optional. Options to configure the HTTP pipeline.
      */
-    BlobServiceClient.fromConnectionString = function (connectionString, options) {
+    static fromConnectionString(connectionString, options) {
         options = options || {};
-        var extractedCreds = extractConnectionStringParts(connectionString);
+        const extractedCreds = extractConnectionStringParts(connectionString);
         if (extractedCreds.kind === "AccountConnString") {
             {
-                var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                 options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
-                var pipeline = newPipeline(sharedKeyCredential, options);
+                const pipeline = newPipeline(sharedKeyCredential, options);
                 return new BlobServiceClient(extractedCreds.url, pipeline);
             }
         }
         else if (extractedCreds.kind === "SASConnString") {
-            var pipeline = newPipeline(new AnonymousCredential(), options);
+            const pipeline = newPipeline(new AnonymousCredential(), options);
             return new BlobServiceClient(extractedCreds.url + "?" + extractedCreds.accountSas, pipeline);
         }
         else {
             throw new Error("Connection string must be either an Account connection string or a SAS connection string");
         }
-    };
+    }
     /**
      * Creates a {@link ContainerClient} object
      *
@@ -41342,9 +38215,9 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * const containerClient = blobServiceClient.getContainerClient("<container name>");
      * ```
      */
-    BlobServiceClient.prototype.getContainerClient = function (containerName) {
+    getContainerClient(containerName) {
         return new ContainerClient(appendToURLPath(this.url, encodeURIComponent(containerName)), this.pipeline);
-    };
+    }
     /**
      * Create a Blob container.
      *
@@ -41352,40 +38225,27 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to configure Container Create operation.
      * @returns Container creation response and the corresponding container client.
      */
-    BlobServiceClient.prototype.createContainer = function (containerName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, containerClient, containerCreateResponse, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-createContainer", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(containerName);
-                        return [4 /*yield*/, containerClient.create(updatedOptions)];
-                    case 2:
-                        containerCreateResponse = _b.sent();
-                        return [2 /*return*/, {
-                                containerClient: containerClient,
-                                containerCreateResponse: containerCreateResponse
-                            }];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async createContainer(containerName, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-createContainer", options);
+        try {
+            const containerClient = this.getContainerClient(containerName);
+            const containerCreateResponse = await containerClient.create(updatedOptions);
+            return {
+                containerClient,
+                containerCreateResponse
+            };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Deletes a Blob container.
      *
@@ -41393,35 +38253,23 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to configure Container Delete operation.
      * @returns Container deletion response.
      */
-    BlobServiceClient.prototype.deleteContainer = function (containerName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, containerClient, e_2;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-deleteContainer", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(containerName);
-                        return [4 /*yield*/, containerClient.delete(updatedOptions)];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_2 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async deleteContainer(containerName, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-deleteContainer", options);
+        try {
+            const containerClient = this.getContainerClient(containerName);
+            return await containerClient.delete(updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Restore a previously deleted Blob container.
      * This API is only functional if Container Soft Delete is enabled for the storage account associated with the container.
@@ -41431,39 +38279,27 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to configure Container Restore operation.
      * @returns Container deletion response.
      */
-    BlobServiceClient.prototype.undeleteContainer = function (deletedContainerName, deletedContainerVersion, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, containerClient, containerContext, containerUndeleteResponse, e_3;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-undeleteContainer", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(options.destinationContainerName || deletedContainerName);
-                        containerContext = new Container(containerClient["storageClientContext"]);
-                        return [4 /*yield*/, containerContext.restore(tslib.__assign({ deletedContainerName: deletedContainerName,
-                                deletedContainerVersion: deletedContainerVersion }, updatedOptions))];
-                    case 2:
-                        containerUndeleteResponse = _b.sent();
-                        return [2 /*return*/, { containerClient: containerClient, containerUndeleteResponse: containerUndeleteResponse }];
-                    case 3:
-                        e_3 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async undeleteContainer(deletedContainerName, deletedContainerVersion, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-undeleteContainer", options);
+        try {
+            const containerClient = this.getContainerClient(options.destinationContainerName || deletedContainerName);
+            // Hack to access a protected member.
+            const containerContext = new Container(containerClient["storageClientContext"]);
+            const containerUndeleteResponse = await containerContext.restore(Object.assign({ deletedContainerName,
+                deletedContainerVersion }, updatedOptions));
+            return { containerClient, containerUndeleteResponse };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Rename an existing Blob Container.
      *
@@ -41472,39 +38308,27 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to configure Container Rename operation.
      */
     // @ts-ignore Need to hide this interface for now. Make it public and turn on the live tests for it when the service is ready.
-    BlobServiceClient.prototype.renameContainer = function (sourceContainerName, destinationContainerName, options) {
+    async renameContainer(sourceContainerName, destinationContainerName, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, containerClient, containerContext, containerRenameResponse, e_4;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobServiceClient-renameContainer", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(destinationContainerName);
-                        containerContext = new Container(containerClient["storageClientContext"]);
-                        return [4 /*yield*/, containerContext.rename(sourceContainerName, tslib.__assign(tslib.__assign({}, updatedOptions), { sourceLeaseId: (_a = options.sourceCondition) === null || _a === void 0 ? void 0 : _a.leaseId }))];
-                    case 2:
-                        containerRenameResponse = _c.sent();
-                        return [2 /*return*/, { containerClient: containerClient, containerRenameResponse: containerRenameResponse }];
-                    case 3:
-                        e_4 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobServiceClient-renameContainer", options);
+        try {
+            const containerClient = this.getContainerClient(destinationContainerName);
+            // Hack to access a protected member.
+            const containerContext = new Container(containerClient["storageClientContext"]);
+            const containerRenameResponse = await containerContext.rename(sourceContainerName, Object.assign(Object.assign({}, updatedOptions), { sourceLeaseId: (_a = options.sourceCondition) === null || _a === void 0 ? void 0 : _a.leaseId }));
+            return { containerClient, containerRenameResponse };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the properties of a storage account’s Blob service, including properties
      * for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.
@@ -41513,34 +38337,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service Get Properties operation.
      * @returns Response data for the Service Get Properties operation.
      */
-    BlobServiceClient.prototype.getProperties = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_5;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getProperties", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getProperties(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_5 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getProperties(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getProperties", options);
+        try {
+            return await this.serviceContext.getProperties(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets properties for a storage account’s Blob service endpoint, including properties
      * for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules and soft delete settings.
@@ -41550,34 +38362,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service Set Properties operation.
      * @returns Response data for the Service Set Properties operation.
      */
-    BlobServiceClient.prototype.setProperties = function (properties, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_6;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-setProperties", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.setProperties(properties, tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_6 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setProperties(properties, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-setProperties", options);
+        try {
+            return await this.serviceContext.setProperties(properties, Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Retrieves statistics related to replication for the Blob service. It is only
      * available on the secondary location endpoint when read-access geo-redundant
@@ -41587,34 +38387,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service Get Statistics operation.
      * @returns Response data for the Service Get Statistics operation.
      */
-    BlobServiceClient.prototype.getStatistics = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_7;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getStatistics", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getStatistics(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_7 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getStatistics(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getStatistics", options);
+        try {
+            return await this.serviceContext.getStatistics(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Get Account Information operation returns the sku name and account kind
      * for the specified account.
@@ -41625,34 +38413,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service Get Account Info operation.
      * @returns Response data for the Service Get Account Info operation.
      */
-    BlobServiceClient.prototype.getAccountInfo = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_8;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getAccountInfo", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getAccountInfo(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_8 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getAccountInfo(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getAccountInfo", options);
+        try {
+            return await this.serviceContext.getAccountInfo(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns a list of the containers under the specified account.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/list-containers2
@@ -41667,34 +38443,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service List Container Segment operation.
      * @returns Response data for the Service List Container Segment operation.
      */
-    BlobServiceClient.prototype.listContainersSegment = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_9;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-listContainersSegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.listContainersSegment(tslib.__assign(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal, marker: marker }, options), { include: typeof options.include === "string" ? [options.include] : options.include }), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_9 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_9.message
-                        });
-                        throw e_9;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listContainersSegment(marker, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-listContainersSegment", options);
+        try {
+            return await this.serviceContext.listContainersSegment(Object.assign(Object.assign(Object.assign({ abortSignal: options.abortSignal, marker }, options), { include: typeof options.include === "string" ? [options.include] : options.include }), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Filter Blobs operation enables callers to list blobs across all containers whose tags
      * match a given search expression. Filter blobs searches across all containers within a
@@ -41713,44 +38477,31 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                          items. The marker value is opaque to the client.
      * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTagsSegment = function (tagFilterSqlExpression, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, wrappedResponse, e_10;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-findBlobsByTagsSegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.filterBlobs(tslib.__assign({ abortSignal: options.abortSignal, where: tagFilterSqlExpression, marker: marker, maxPageSize: options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, blobs: response.blobs.map(function (blob) {
-                                var _a;
-                                var tagValue = "";
-                                if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {
-                                    tagValue = blob.tags.blobTagSet[0].value;
-                                }
-                                return tslib.__assign(tslib.__assign({}, blob), { tags: toTags(blob.tags), tagValue: tagValue });
-                            }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_10 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_10.message
-                        });
-                        throw e_10;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async findBlobsByTagsSegment(tagFilterSqlExpression, marker, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-findBlobsByTagsSegment", options);
+        try {
+            const response = await this.serviceContext.filterBlobs(Object.assign({ abortSignal: options.abortSignal, where: tagFilterSqlExpression, marker, maxPageSize: options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, blobs: response.blobs.map((blob) => {
+                    var _a;
+                    let tagValue = "";
+                    if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {
+                        tagValue = blob.tags.blobTagSet[0].value;
+                    }
+                    return Object.assign(Object.assign({}, blob), { tags: toTags(blob.tags), tagValue });
+                }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns an AsyncIterableIterator for ServiceFindBlobsByTagsSegmentResponse.
      *
@@ -41767,33 +38518,19 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                          items. The marker value is opaque to the client.
      * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTagsSegments = function (tagFilterSqlExpression, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsSegments_1() {
-            var response;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 6];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options))];
-                    case 2:
-                        response = _a.sent();
-                        response.blobs = response.blobs || [];
-                        marker = response.continuationToken;
-                        return [4 /*yield*/, tslib.__await(response)];
-                    case 3: return [4 /*yield*/, _a.sent()];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 6;
-                    case 6: return [2 /*return*/];
-                }
-            });
+    findBlobsByTagsSegments(tagFilterSqlExpression, marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* findBlobsByTagsSegments_1() {
+            let response;
+            if (!!marker || marker === undefined) {
+                do {
+                    response = yield tslib.__await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options));
+                    response.blobs = response.blobs || [];
+                    marker = response.continuationToken;
+                    yield yield tslib.__await(response);
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for blobs.
      *
@@ -41803,49 +38540,25 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
      * @param options - Options to findBlobsByTagsItems.
      */
-    BlobServiceClient.prototype.findBlobsByTagsItems = function (tagFilterSqlExpression, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsItems_1() {
-            var marker, _a, _b, segment, e_11_1;
-            var e_11, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        segment = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.blobs)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_11_1 = _d.sent();
-                        e_11 = { error: e_11_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_11) throw e_11.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    findBlobsByTagsItems(tagFilterSqlExpression, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* findBlobsByTagsItems_1() {
+            var e_1, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const segment = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(segment.blobs)));
                 }
-            });
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to find all blobs with specified tag
      * under the specified account.
@@ -41925,36 +38638,31 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
      * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTags = function (tagFilterSqlExpression, options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    findBlobsByTags(tagFilterSqlExpression, options = {}) {
         // AsyncIterableIterator to iterate over blobs
-        var listSegmentOptions = tslib.__assign({}, options);
-        var iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
-        return _a = {
-                /**
-                 * The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const listSegmentOptions = Object.assign({}, options);
+        const iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
              * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
              * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
+            }
+        };
+    }
     /**
      * Returns an AsyncIterableIterator for ServiceListContainersSegmentResponses
      *
@@ -41967,83 +38675,44 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                        items. The marker value is opaque to the client.
      * @param options - Options to list containers operation.
      */
-    BlobServiceClient.prototype.listSegments = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
-            var listContainersSegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listContainersSegment(marker, options))];
-                    case 2:
-                        listContainersSegmentResponse = _a.sent();
-                        listContainersSegmentResponse.containerItems =
-                            listContainersSegmentResponse.containerItems || [];
-                        marker = listContainersSegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listContainersSegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listSegments(marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listSegments_1() {
+            let listContainersSegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listContainersSegmentResponse = yield tslib.__await(this.listContainersSegment(marker, options));
+                    listContainersSegmentResponse.containerItems =
+                        listContainersSegmentResponse.containerItems || [];
+                    marker = listContainersSegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listContainersSegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for Container Items
      *
      * @param options - Options to list containers operation.
      */
-    BlobServiceClient.prototype.listItems = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItems_1() {
-            var marker, _a, _b, segment, e_12_1;
-            var e_12, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.listSegments(marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        segment = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.containerItems)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_12_1 = _d.sent();
-                        e_12 = { error: e_12_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_12) throw e_12.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    listItems(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItems_1() {
+            var e_2, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listSegments(marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const segment = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(segment.containerItems)));
                 }
-            });
+            }
+            catch (e_2_1) { e_2 = { error: e_2_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_2) throw e_2.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the containers
      * under the specified account.
@@ -42118,14 +38787,11 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to list containers.
      * @returns An asyncIterableIterator that supports paging.
      */
-    BlobServiceClient.prototype.listContainers = function (options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    listContainers(options = {}) {
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var include = [];
+        const include = [];
         if (options.includeDeleted) {
             include.push("deleted");
         }
@@ -42133,31 +38799,29 @@ var BlobServiceClient = /** @class */ (function (_super) {
             include.push("metadata");
         }
         // AsyncIterableIterator to iterate over containers
-        var listSegmentOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
-        var iter = this.listItems(listSegmentOptions);
-        return _a = {
-                /**
-                 * The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const listSegmentOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include } : {}));
+        const iter = this.listItems(listSegmentOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
              * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
              * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
+            }
+        };
+    }
     /**
      * ONLY AVAILABLE WHEN USING BEARER TOKEN AUTHENTICATION (TokenCredential).
      *
@@ -42169,49 +38833,36 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param startsOn -      The start time for the user delegation SAS. Must be within 7 days of the current time
      * @param expiresOn -     The end time for the user delegation SAS. Must be within 7 days of the current time
      */
-    BlobServiceClient.prototype.getUserDelegationKey = function (startsOn, expiresOn, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, userDelegationKey, res, e_13;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getUserDelegationKey", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getUserDelegationKey({
-                                startsOn: truncatedISO8061Date(startsOn, false),
-                                expiresOn: truncatedISO8061Date(expiresOn, false)
-                            }, tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        userDelegationKey = {
-                            signedObjectId: response.signedObjectId,
-                            signedTenantId: response.signedTenantId,
-                            signedStartsOn: new Date(response.signedStartsOn),
-                            signedExpiresOn: new Date(response.signedExpiresOn),
-                            signedService: response.signedService,
-                            signedVersion: response.signedVersion,
-                            value: response.value
-                        };
-                        res = tslib.__assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_13 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_13.message
-                        });
-                        throw e_13;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getUserDelegationKey(startsOn, expiresOn, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getUserDelegationKey", options);
+        try {
+            const response = await this.serviceContext.getUserDelegationKey({
+                startsOn: truncatedISO8061Date(startsOn, false),
+                expiresOn: truncatedISO8061Date(expiresOn, false)
+            }, Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const userDelegationKey = {
+                signedObjectId: response.signedObjectId,
+                signedTenantId: response.signedTenantId,
+                signedStartsOn: new Date(response.signedStartsOn),
+                signedExpiresOn: new Date(response.signedExpiresOn),
+                signedService: response.signedService,
+                signedVersion: response.signedVersion,
+                value: response.value
+            };
+            const res = Object.assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a BlobBatchClient object to conduct batch operations.
      *
@@ -42219,9 +38870,9 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *
      * @returns A new BlobBatchClient object for this service.
      */
-    BlobServiceClient.prototype.getBlobBatchClient = function () {
+    getBlobBatchClient() {
         return new BlobBatchClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Only available for BlobServiceClient constructed with a shared key credential.
      *
@@ -42236,24 +38887,20 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Optional parameters.
      * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
      */
-    BlobServiceClient.prototype.generateAccountSasUrl = function (expiresOn, permissions, resourceTypes, options) {
-        if (permissions === void 0) { permissions = AccountSASPermissions.parse("r"); }
-        if (resourceTypes === void 0) { resourceTypes = "sco"; }
-        if (options === void 0) { options = {}; }
+    generateAccountSasUrl(expiresOn, permissions = AccountSASPermissions.parse("r"), resourceTypes = "sco", options = {}) {
         if (!(this.credential instanceof StorageSharedKeyCredential)) {
             throw RangeError("Can only generate the account SAS when the client is initialized with a shared key credential");
         }
         if (expiresOn === undefined) {
-            var now = new Date();
+            const now = new Date();
             expiresOn = new Date(now.getTime() + 3600 * 1000);
         }
-        var sas = generateAccountSASQueryParameters(tslib.__assign({ permissions: permissions,
-            expiresOn: expiresOn,
-            resourceTypes: resourceTypes, services: AccountSASServices.parse("b").toString() }, options), this.credential).toString();
+        const sas = generateAccountSASQueryParameters(Object.assign({ permissions,
+            expiresOn,
+            resourceTypes, services: AccountSASServices.parse("b").toString() }, options), this.credential).toString();
         return appendToURLQuery(this.url, sas);
-    };
-    return BlobServiceClient;
-}(StorageClient));
+    }
+}
 
 Object.defineProperty(exports, 'BaseRequestPolicy', {
     enumerable: true,
@@ -44181,6 +40828,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
 exports.ProxyTracerProvider = void 0;
 var ProxyTracer_1 = __webpack_require__(398);
 var NoopTracerProvider_1 = __webpack_require__(162);
+var NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();
 /**
  * Tracer provider which provides {@link ProxyTracer}s.
  *
@@ -44201,7 +40849,7 @@ var ProxyTracerProvider = /** @class */ (function () {
     };
     ProxyTracerProvider.prototype.getDelegate = function () {
         var _a;
-        return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopTracerProvider_1.NOOP_TRACER_PROVIDER;
+        return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;
     };
     /**
      * Set the delegate tracer provider
@@ -44259,6 +40907,7 @@ module.exports = function (Yallist) {
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.ProxyTracer = void 0;
 var NoopTracer_1 = __webpack_require__(151);
+var NOOP_TRACER = new NoopTracer_1.NoopTracer();
 /**
  * Proxy tracer provided by the proxy tracer provider
  */
@@ -44271,6 +40920,10 @@ var ProxyTracer = /** @class */ (function () {
     ProxyTracer.prototype.startSpan = function (name, options, context) {
         return this._getTracer().startSpan(name, options, context);
     };
+    ProxyTracer.prototype.startActiveSpan = function (_name, _options, _context, _fn) {
+        var tracer = this._getTracer();
+        return Reflect.apply(tracer.startActiveSpan, tracer, arguments);
+    };
     /**
      * Try to get a tracer from the proxy tracer provider.
      * If the proxy tracer provider has no delegate, return a noop tracer.
@@ -44281,7 +40934,7 @@ var ProxyTracer = /** @class */ (function () {
         }
         var tracer = this._provider.getDelegateTracer(this.name, this.version);
         if (!tracer) {
-            return NoopTracer_1.NOOP_TRACER;
+            return NOOP_TRACER;
         }
         this._delegate = tracer;
         return this._delegate;
@@ -44835,12 +41488,10 @@ function parallel(list, iterator, callback)
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var __spreadArrays = (this && this.__spreadArrays) || function () {
-    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-    for (var r = Array(s), k = 0, i = 0; i < il; i++)
-        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-            r[k] = a[j];
-    return r;
+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
+    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+        to[j] = from[i];
+    return to;
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.NoopContextManager = void 0;
@@ -44856,9 +41507,9 @@ var NoopContextManager = /** @class */ (function () {
         for (var _i = 3; _i < arguments.length; _i++) {
             args[_i - 3] = arguments[_i];
         }
-        return fn.call.apply(fn, __spreadArrays([thisArg], args));
+        return fn.call.apply(fn, __spreadArray([thisArg], args));
     };
-    NoopContextManager.prototype.bind = function (target, _context) {
+    NoopContextManager.prototype.bind = function (_context, target) {
         return target;
     };
     NoopContextManager.prototype.enable = function () {
@@ -45137,7 +41788,77 @@ exports.listTar = listTar;
 /***/ }),
 /* 435 */,
 /* 436 */,
-/* 437 */,
+/* 437 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NonRecordingSpan = void 0;
+var spancontext_utils_1 = __webpack_require__(629);
+/**
+ * The NonRecordingSpan is the default {@link Span} that is used when no Span
+ * implementation is available. All operations are no-op including context
+ * propagation.
+ */
+var NonRecordingSpan = /** @class */ (function () {
+    function NonRecordingSpan(_spanContext) {
+        if (_spanContext === void 0) { _spanContext = spancontext_utils_1.INVALID_SPAN_CONTEXT; }
+        this._spanContext = _spanContext;
+    }
+    // Returns a SpanContext.
+    NonRecordingSpan.prototype.spanContext = function () {
+        return this._spanContext;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setAttribute = function (_key, _value) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setAttributes = function (_attributes) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.addEvent = function (_name, _attributes) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setStatus = function (_status) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.updateName = function (_name) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.end = function (_endTime) { };
+    // isRecording always returns false for NonRecordingSpan.
+    NonRecordingSpan.prototype.isRecording = function () {
+        return false;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.recordException = function (_exception, _time) { };
+    return NonRecordingSpan;
+}());
+exports.NonRecordingSpan = NonRecordingSpan;
+//# sourceMappingURL=NonRecordingSpan.js.map
+
+/***/ }),
 /* 438 */,
 /* 439 */,
 /* 440 */
@@ -45171,19 +41892,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
     for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.diag = exports.propagation = exports.trace = exports.context = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
-__exportStar(__webpack_require__(792), exports);
+exports.diag = exports.propagation = exports.trace = exports.context = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.baggageEntryMetadataFromString = void 0;
+__exportStar(__webpack_require__(880), exports);
+var utils_1 = __webpack_require__(112);
+Object.defineProperty(exports, "baggageEntryMetadataFromString", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });
 __exportStar(__webpack_require__(452), exports);
 __exportStar(__webpack_require__(158), exports);
 __exportStar(__webpack_require__(893), exports);
-__exportStar(__webpack_require__(918), exports);
 __exportStar(__webpack_require__(881), exports);
 __exportStar(__webpack_require__(906), exports);
-__exportStar(__webpack_require__(727), exports);
-__exportStar(__webpack_require__(851), exports);
 __exportStar(__webpack_require__(95), exports);
-__exportStar(__webpack_require__(151), exports);
-__exportStar(__webpack_require__(162), exports);
 __exportStar(__webpack_require__(398), exports);
 __exportStar(__webpack_require__(394), exports);
 __exportStar(__webpack_require__(781), exports);
@@ -45193,7 +41911,6 @@ __exportStar(__webpack_require__(670), exports);
 __exportStar(__webpack_require__(59), exports);
 __exportStar(__webpack_require__(220), exports);
 __exportStar(__webpack_require__(932), exports);
-__exportStar(__webpack_require__(839), exports);
 __exportStar(__webpack_require__(975), exports);
 __exportStar(__webpack_require__(70), exports);
 __exportStar(__webpack_require__(773), exports);
@@ -45206,7 +41923,6 @@ Object.defineProperty(exports, "isSpanContextValid", { enumerable: true, get: fu
 Object.defineProperty(exports, "isValidTraceId", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });
 Object.defineProperty(exports, "isValidSpanId", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });
 __exportStar(__webpack_require__(132), exports);
-__exportStar(__webpack_require__(425), exports);
 __exportStar(__webpack_require__(845), exports);
 var context_1 = __webpack_require__(77);
 /** Entrypoint for context API */
@@ -47842,7 +44558,65 @@ module.exports = validRange
 /***/ }),
 /* 481 */,
 /* 482 */,
-/* 483 */,
+/* 483 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.deleteBaggage = exports.setBaggage = exports.getBaggage = void 0;
+var context_1 = __webpack_require__(132);
+/**
+ * Baggage key
+ */
+var BAGGAGE_KEY = context_1.createContextKey('OpenTelemetry Baggage Key');
+/**
+ * Retrieve the current baggage from the given context
+ *
+ * @param {Context} Context that manage all context values
+ * @returns {Baggage} Extracted baggage from the context
+ */
+function getBaggage(context) {
+    return context.getValue(BAGGAGE_KEY) || undefined;
+}
+exports.getBaggage = getBaggage;
+/**
+ * Store a baggage in the given context
+ *
+ * @param {Context} Context that manage all context values
+ * @param {Baggage} baggage that will be set in the actual context
+ */
+function setBaggage(context, baggage) {
+    return context.setValue(BAGGAGE_KEY, baggage);
+}
+exports.setBaggage = setBaggage;
+/**
+ * Delete the baggage stored in the given context
+ *
+ * @param {Context} Context that manage all context values
+ */
+function deleteBaggage(context) {
+    return context.deleteValue(BAGGAGE_KEY);
+}
+exports.deleteBaggage = deleteBaggage;
+//# sourceMappingURL=context-helpers.js.map
+
+/***/ }),
 /* 484 */,
 /* 485 */,
 /* 486 */
@@ -48482,33 +45256,33 @@ module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"appl
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;
-var __1 = __webpack_require__(440);
 var platform_1 = __webpack_require__(910);
 var version_1 = __webpack_require__(133);
 var semver_1 = __webpack_require__(987);
 var major = version_1.VERSION.split('.')[0];
-var GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for("io.opentelemetry.js.api." + major);
+var GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for("opentelemetry.js.api." + major);
 var _global = platform_1._globalThis;
-function registerGlobal(type, instance, allowOverride) {
+function registerGlobal(type, instance, diag, allowOverride) {
     var _a;
     if (allowOverride === void 0) { allowOverride = false; }
-    _global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {
+    var api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {
         version: version_1.VERSION,
-    };
-    var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];
+    });
     if (!allowOverride && api[type]) {
         // already registered an API of this type
         var err = new Error("@opentelemetry/api: Attempted duplicate registration of API: " + type);
-        __1.diag.error(err.stack || err.message);
-        return;
+        diag.error(err.stack || err.message);
+        return false;
     }
     if (api.version !== version_1.VERSION) {
         // All registered APIs must be of the same version exactly
         var err = new Error('@opentelemetry/api: All API registration versions must match');
-        __1.diag.error(err.stack || err.message);
-        return;
+        diag.error(err.stack || err.message);
+        return false;
     }
     api[type] = instance;
+    diag.debug("@opentelemetry/api: Registered a global for " + type + " v" + version_1.VERSION + ".");
+    return true;
 }
 exports.registerGlobal = registerGlobal;
 function getGlobal(type) {
@@ -48520,7 +45294,8 @@ function getGlobal(type) {
     return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];
 }
 exports.getGlobal = getGlobal;
-function unregisterGlobal(type) {
+function unregisterGlobal(type, diag) {
+    diag.debug("@opentelemetry/api: Unregistering a global for " + type + " v" + version_1.VERSION + ".");
     var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];
     if (api) {
         delete api[type];
@@ -52396,76 +49171,7 @@ exports.partialMatch = partialMatch;
 
 /***/ }),
 /* 598 */,
-/* 599 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.BaggageImpl = void 0;
-var BaggageImpl = /** @class */ (function () {
-    function BaggageImpl(entries) {
-        this._entries = entries ? new Map(entries) : new Map();
-    }
-    BaggageImpl.prototype.getEntry = function (key) {
-        var entry = this._entries.get(key);
-        if (!entry) {
-            return undefined;
-        }
-        return Object.assign({}, entry);
-    };
-    BaggageImpl.prototype.getAllEntries = function () {
-        return Array.from(this._entries.entries()).map(function (_a) {
-            var k = _a[0], v = _a[1];
-            return [k, v];
-        });
-    };
-    BaggageImpl.prototype.setEntry = function (key, entry) {
-        var newBaggage = new BaggageImpl(this._entries);
-        newBaggage._entries.set(key, entry);
-        return newBaggage;
-    };
-    BaggageImpl.prototype.removeEntry = function (key) {
-        var newBaggage = new BaggageImpl(this._entries);
-        newBaggage._entries.delete(key);
-        return newBaggage;
-    };
-    BaggageImpl.prototype.removeEntries = function () {
-        var keys = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-            keys[_i] = arguments[_i];
-        }
-        var newBaggage = new BaggageImpl(this._entries);
-        for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
-            var key = keys_1[_a];
-            newBaggage._entries.delete(key);
-        }
-        return newBaggage;
-    };
-    BaggageImpl.prototype.clear = function () {
-        return new BaggageImpl();
-    };
-    return BaggageImpl;
-}());
-exports.BaggageImpl = BaggageImpl;
-//# sourceMappingURL=baggage.js.map
-
-/***/ }),
+/* 599 */,
 /* 600 */,
 /* 601 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
@@ -53411,7 +50117,23 @@ module.exports = require("path");
 "use strict";
 
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
+exports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var NonRecordingSpan_1 = __webpack_require__(437);
 var trace_flags_1 = __webpack_require__(975);
 var VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;
 var VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;
@@ -53438,6 +50160,16 @@ function isSpanContextValid(spanContext) {
     return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));
 }
 exports.isSpanContextValid = isSpanContextValid;
+/**
+ * Wrap the given {@link SpanContext} in a new non-recording {@link Span}
+ *
+ * @param spanContext span context to be wrapped
+ * @returns a new non-recording {@link Span} with the provided context
+ */
+function wrapSpanContext(spanContext) {
+    return new NonRecordingSpan_1.NonRecordingSpan(spanContext);
+}
+exports.wrapSpanContext = wrapSpanContext;
 //# sourceMappingURL=spancontext-utils.js.map
 
 /***/ }),
@@ -53551,312 +50283,312 @@ module.exports = require("net");
 /* 640 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -55435,30 +52167,7 @@ var __createBinding;
 
 
 /***/ }),
-/* 646 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Entry.js.map
-
-/***/ }),
+/* 646 */,
 /* 647 */,
 /* 648 */,
 /* 649 */,
@@ -55864,7 +52573,76 @@ exports.safeTrimTrailingSeparator = safeTrimTrailingSeparator;
 /* 663 */,
 /* 664 */,
 /* 665 */,
-/* 666 */,
+/* 666 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.BaggageImpl = void 0;
+var BaggageImpl = /** @class */ (function () {
+    function BaggageImpl(entries) {
+        this._entries = entries ? new Map(entries) : new Map();
+    }
+    BaggageImpl.prototype.getEntry = function (key) {
+        var entry = this._entries.get(key);
+        if (!entry) {
+            return undefined;
+        }
+        return Object.assign({}, entry);
+    };
+    BaggageImpl.prototype.getAllEntries = function () {
+        return Array.from(this._entries.entries()).map(function (_a) {
+            var k = _a[0], v = _a[1];
+            return [k, v];
+        });
+    };
+    BaggageImpl.prototype.setEntry = function (key, entry) {
+        var newBaggage = new BaggageImpl(this._entries);
+        newBaggage._entries.set(key, entry);
+        return newBaggage;
+    };
+    BaggageImpl.prototype.removeEntry = function (key) {
+        var newBaggage = new BaggageImpl(this._entries);
+        newBaggage._entries.delete(key);
+        return newBaggage;
+    };
+    BaggageImpl.prototype.removeEntries = function () {
+        var keys = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            keys[_i] = arguments[_i];
+        }
+        var newBaggage = new BaggageImpl(this._entries);
+        for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
+            var key = keys_1[_a];
+            newBaggage._entries.delete(key);
+        }
+        return newBaggage;
+    };
+    BaggageImpl.prototype.clear = function () {
+        return new BaggageImpl();
+    };
+    return BaggageImpl;
+}());
+exports.BaggageImpl = BaggageImpl;
+//# sourceMappingURL=baggage-impl.js.map
+
+/***/ }),
 /* 667 */,
 /* 668 */,
 /* 669 */
@@ -56909,7 +53687,86 @@ module.exports = valid
 /* 717 */,
 /* 718 */,
 /* 719 */,
-/* 720 */,
+/* 720 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getSpan = void 0;
+var context_1 = __webpack_require__(132);
+var NonRecordingSpan_1 = __webpack_require__(437);
+/**
+ * span key
+ */
+var SPAN_KEY = context_1.createContextKey('OpenTelemetry Context Key SPAN');
+/**
+ * Return the span if one exists
+ *
+ * @param context context to get span from
+ */
+function getSpan(context) {
+    return context.getValue(SPAN_KEY) || undefined;
+}
+exports.getSpan = getSpan;
+/**
+ * Set the span on a context
+ *
+ * @param context context to use as parent
+ * @param span span to set active
+ */
+function setSpan(context, span) {
+    return context.setValue(SPAN_KEY, span);
+}
+exports.setSpan = setSpan;
+/**
+ * Remove current span stored in the context
+ *
+ * @param context context to delete span from
+ */
+function deleteSpan(context) {
+    return context.deleteValue(SPAN_KEY);
+}
+exports.deleteSpan = deleteSpan;
+/**
+ * Wrap span context in a NoopSpan and set as span in a new
+ * context
+ *
+ * @param context context to set active span on
+ * @param spanContext span context to be wrapped
+ */
+function setSpanContext(context, spanContext) {
+    return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));
+}
+exports.setSpanContext = setSpanContext;
+/**
+ * Get the span context of the span if it exists.
+ *
+ * @param context context to get values from
+ */
+function getSpanContext(context) {
+    var _a;
+    return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();
+}
+exports.getSpanContext = getSpanContext;
+//# sourceMappingURL=context-utils.js.map
+
+/***/ }),
 /* 721 */,
 /* 722 */
 /***/ (function(module) {
@@ -56966,343 +53823,9 @@ module.exports = bytesToUuid;
 
 
 /***/ }),
-/* 725 */
-/***/ (function(module) {
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
-
-
-/***/ }),
+/* 725 */,
 /* 726 */,
-/* 727 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Event.js.map
-
-/***/ }),
+/* 727 */,
 /* 728 */
 /***/ (function(__unusedmodule, exports) {
 
@@ -58216,77 +54739,7 @@ module.exports = function(dst, src) {
 
 
 /***/ }),
-/* 767 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NoopSpan = void 0;
-var spancontext_utils_1 = __webpack_require__(629);
-/**
- * The NoopSpan is the default {@link Span} that is used when no Span
- * implementation is available. All operations are no-op including context
- * propagation.
- */
-var NoopSpan = /** @class */ (function () {
-    function NoopSpan(_spanContext) {
-        if (_spanContext === void 0) { _spanContext = spancontext_utils_1.INVALID_SPAN_CONTEXT; }
-        this._spanContext = _spanContext;
-    }
-    // Returns a SpanContext.
-    NoopSpan.prototype.context = function () {
-        return this._spanContext;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setAttribute = function (_key, _value) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setAttributes = function (_attributes) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.addEvent = function (_name, _attributes) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setStatus = function (_status) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.updateName = function (_name) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.end = function (_endTime) { };
-    // isRecording always returns false for noopSpan.
-    NoopSpan.prototype.isRecording = function () {
-        return false;
-    };
-    // By default does nothing
-    NoopSpan.prototype.recordException = function (_exception, _time) { };
-    return NoopSpan;
-}());
-exports.NoopSpan = NoopSpan;
-//# sourceMappingURL=NoopSpan.js.map
-
-/***/ }),
+/* 767 */,
 /* 768 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -59664,74 +56117,7 @@ FormData.prototype.toString = function () {
 
 
 /***/ }),
-/* 792 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.baggageEntryMetadataFromString = exports.createBaggage = void 0;
-var baggage_1 = __webpack_require__(599);
-var symbol_1 = __webpack_require__(561);
-__exportStar(__webpack_require__(938), exports);
-__exportStar(__webpack_require__(646), exports);
-/**
- * Create a new Baggage with optional entries
- *
- * @param entries An array of baggage entries the new baggage should contain
- */
-function createBaggage(entries) {
-    if (entries === void 0) { entries = {}; }
-    return new baggage_1.BaggageImpl(new Map(Object.entries(entries)));
-}
-exports.createBaggage = createBaggage;
-/**
- * Create a serializable BaggageEntryMetadata object from a string.
- *
- * @param str string metadata. Format is currently not defined by the spec and has no special meaning.
- *
- */
-function baggageEntryMetadataFromString(str) {
-    if (typeof str !== 'string') {
-        // @TODO log diagnostic
-        str = '';
-    }
-    return {
-        __TYPE__: symbol_1.baggageEntryMetadataSymbol,
-        toString: function () {
-            return str;
-        },
-    };
-}
-exports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;
-//# sourceMappingURL=index.js.map
-
-/***/ }),
+/* 792 */,
 /* 793 */,
 /* 794 */
 /***/ (function(module) {
@@ -60163,312 +56549,312 @@ module.exports = maxSatisfying
 /* 815 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -60605,30 +56991,7 @@ module.exports = require("url");
 /* 836 */,
 /* 837 */,
 /* 838 */,
-/* 839 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=TimedEvent.js.map
-
-/***/ }),
+/* 839 */,
 /* 840 */,
 /* 841 */,
 /* 842 */,
@@ -60663,30 +57026,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
 /* 848 */,
 /* 849 */,
 /* 850 */,
-/* 851 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=link_context.js.map
-
-/***/ }),
+/* 851 */,
 /* 852 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -61003,312 +57343,312 @@ exports.DefaultGlobber = DefaultGlobber;
 /* 865 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -61361,9 +57701,11 @@ module.exports = compare
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.TraceAPI = void 0;
+var global_utils_1 = __webpack_require__(525);
 var ProxyTracerProvider_1 = __webpack_require__(394);
 var spancontext_utils_1 = __webpack_require__(629);
-var global_utils_1 = __webpack_require__(525);
+var context_utils_1 = __webpack_require__(720);
+var diag_1 = __webpack_require__(118);
 var API_NAME = 'trace';
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Tracing API
@@ -61372,7 +57714,13 @@ var TraceAPI = /** @class */ (function () {
     /** Empty private constructor prevents end users from constructing a new instance of the API */
     function TraceAPI() {
         this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
+        this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;
         this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;
+        this.deleteSpan = context_utils_1.deleteSpan;
+        this.getSpan = context_utils_1.getSpan;
+        this.getSpanContext = context_utils_1.getSpanContext;
+        this.setSpan = context_utils_1.setSpan;
+        this.setSpanContext = context_utils_1.setSpanContext;
     }
     /** Get the singleton instance of the Trace API */
     TraceAPI.getInstance = function () {
@@ -61382,12 +57730,16 @@ var TraceAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current global tracer. Returns the initialized global tracer provider
+     * Set the current global tracer.
+     *
+     * @returns true if the tracer provider was successfully registered, else false
      */
     TraceAPI.prototype.setGlobalTracerProvider = function (provider) {
-        this._proxyTracerProvider.setDelegate(provider);
-        global_utils_1.registerGlobal(API_NAME, this._proxyTracerProvider);
-        return this._proxyTracerProvider;
+        var success = global_utils_1.registerGlobal(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());
+        if (success) {
+            this._proxyTracerProvider.setDelegate(provider);
+        }
+        return success;
     };
     /**
      * Returns the global tracer provider.
@@ -61403,7 +57755,7 @@ var TraceAPI = /** @class */ (function () {
     };
     /** Remove the global tracer provider */
     TraceAPI.prototype.disable = function () {
-        global_utils_1.unregisterGlobal(API_NAME);
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
         this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
     };
     return TraceAPI;
@@ -61518,7 +57870,30 @@ module.exports = (versions, range, options) => {
 /***/ }),
 /* 878 */,
 /* 879 */,
-/* 880 */,
+/* 880 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=types.js.map
+
+/***/ }),
 /* 881 */
 /***/ (function(__unusedmodule, exports) {
 
@@ -63639,48 +60014,36 @@ exports.deleteKey = deleteKey;
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
-/*!
- * Copyright (c) Microsoft and contributors. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- * 
- * Azure Core LRO SDK for JavaScript - 1.0.5
- */
 
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
-var tslib = __webpack_require__(725);
+var logger$1 = __webpack_require__(492);
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * When a poller is manually stopped through the `stopPolling` method,
  * the poller will be rejected with an instance of the PollerStoppedError.
  */
-var PollerStoppedError = /** @class */ (function (_super) {
-    tslib.__extends(PollerStoppedError, _super);
-    function PollerStoppedError(message) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "PollerStoppedError";
-        Object.setPrototypeOf(_this, PollerStoppedError.prototype);
-        return _this;
+class PollerStoppedError extends Error {
+    constructor(message) {
+        super(message);
+        this.name = "PollerStoppedError";
+        Object.setPrototypeOf(this, PollerStoppedError.prototype);
     }
-    return PollerStoppedError;
-}(Error));
+}
 /**
  * When a poller is cancelled through the `cancelOperation` method,
  * the poller will be rejected with an instance of the PollerCancelledError.
  */
-var PollerCancelledError = /** @class */ (function (_super) {
-    tslib.__extends(PollerCancelledError, _super);
-    function PollerCancelledError(message) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "PollerCancelledError";
-        Object.setPrototypeOf(_this, PollerCancelledError.prototype);
-        return _this;
+class PollerCancelledError extends Error {
+    constructor(message) {
+        super(message);
+        this.name = "PollerCancelledError";
+        Object.setPrototypeOf(this, PollerCancelledError.prototype);
     }
-    return PollerCancelledError;
-}(Error));
+}
 /**
  * A class that represents the definition of a program that polls through consecutive requests
  * until it reaches a state of completion.
@@ -63743,7 +60106,7 @@ var PollerCancelledError = /** @class */ (function (_super) {
  *
  */
 // eslint-disable-next-line no-use-before-define
-var Poller = /** @class */ (function () {
+class Poller {
     /**
      * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation<TState, TResult>`.
      *
@@ -63809,19 +60172,18 @@ var Poller = /** @class */ (function () {
      *
      * @param operation - Must contain the basic properties of `PollOperation<State, TResult>`.
      */
-    function Poller(operation) {
-        var _this = this;
+    constructor(operation) {
         this.stopped = true;
         this.pollProgressCallbacks = [];
         this.operation = operation;
-        this.promise = new Promise(function (resolve, reject) {
-            _this.resolve = resolve;
-            _this.reject = reject;
+        this.promise = new Promise((resolve, reject) => {
+            this.resolve = resolve;
+            this.reject = reject;
         });
         // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.
         // The above warning would get thrown if `poller.poll` is called, it returns an error,
         // and pullUntilDone did not have a .catch or await try/catch on it's return value.
-        this.promise.catch(function () {
+        this.promise.catch(() => {
             /* intentionally blank */
         });
     }
@@ -63830,29 +60192,15 @@ var Poller = /** @class */ (function () {
      * Starts a loop that will break only if the poller is done
      * or if the poller is stopped.
      */
-    Poller.prototype.startPolling = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (this.stopped) {
-                            this.stopped = false;
-                        }
-                        _a.label = 1;
-                    case 1:
-                        if (!(!this.isStopped() && !this.isDone())) return [3 /*break*/, 4];
-                        return [4 /*yield*/, this.poll()];
-                    case 2:
-                        _a.sent();
-                        return [4 /*yield*/, this.delay()];
-                    case 3:
-                        _a.sent();
-                        return [3 /*break*/, 1];
-                    case 4: return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async startPolling() {
+        if (this.stopped) {
+            this.stopped = false;
+        }
+        while (!this.isStopped() && !this.isDone()) {
+            await this.poll();
+            await this.delay();
+        }
+    }
     /**
      * @internal
      * pollOnce does one polling, by calling to the update method of the underlying
@@ -63862,44 +60210,31 @@ var Poller = /** @class */ (function () {
      *
      * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.pollOnce = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _b.trys.push([0, 3, , 4]);
-                        if (!!this.isDone()) return [3 /*break*/, 2];
-                        _a = this;
-                        return [4 /*yield*/, this.operation.update({
-                                abortSignal: options.abortSignal,
-                                fireProgress: this.fireProgress.bind(this)
-                            })];
-                    case 1:
-                        _a.operation = _b.sent();
-                        if (this.isDone() && this.resolve) {
-                            // If the poller has finished polling, this means we now have a result.
-                            // However, it can be the case that TResult is instantiated to void, so
-                            // we are not expecting a result anyway. To assert that we might not
-                            // have a result eventually after finishing polling, we cast the result
-                            // to TResult.
-                            this.resolve(this.operation.state.result);
-                        }
-                        _b.label = 2;
-                    case 2: return [3 /*break*/, 4];
-                    case 3:
-                        e_1 = _b.sent();
-                        this.operation.state.error = e_1;
-                        if (this.reject) {
-                            this.reject(e_1);
-                        }
-                        throw e_1;
-                    case 4: return [2 /*return*/];
+    async pollOnce(options = {}) {
+        try {
+            if (!this.isDone()) {
+                this.operation = await this.operation.update({
+                    abortSignal: options.abortSignal,
+                    fireProgress: this.fireProgress.bind(this)
+                });
+                if (this.isDone() && this.resolve) {
+                    // If the poller has finished polling, this means we now have a result.
+                    // However, it can be the case that TResult is instantiated to void, so
+                    // we are not expecting a result anyway. To assert that we might not
+                    // have a result eventually after finishing polling, we cast the result
+                    // to TResult.
+                    this.resolve(this.operation.state.result);
                 }
-            });
-        });
-    };
+            }
+        }
+        catch (e) {
+            this.operation.state.error = e;
+            if (this.reject) {
+                this.reject(e);
+            }
+            throw e;
+        }
+    }
     /**
      * @internal
      * fireProgress calls the functions passed in via onProgress the method of the poller.
@@ -63909,36 +60244,22 @@ var Poller = /** @class */ (function () {
      *
      * @param state - The current operation state.
      */
-    Poller.prototype.fireProgress = function (state) {
-        for (var _i = 0, _a = this.pollProgressCallbacks; _i < _a.length; _i++) {
-            var callback = _a[_i];
+    fireProgress(state) {
+        for (const callback of this.pollProgressCallbacks) {
             callback(state);
         }
-    };
+    }
     /**
      * @internal
      * Invokes the underlying operation's cancel method, and rejects the
      * pollUntilDone promise.
      */
-    Poller.prototype.cancelOnce = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = this;
-                        return [4 /*yield*/, this.operation.cancel(options)];
-                    case 1:
-                        _a.operation = _b.sent();
-                        if (this.reject) {
-                            this.reject(new PollerCancelledError("Poller cancelled"));
-                        }
-                        return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async cancelOnce(options = {}) {
+        this.operation = await this.operation.cancel(options);
+        if (this.reject) {
+            this.reject(new PollerCancelledError("Poller cancelled"));
+        }
+    }
     /**
      * Returns a promise that will resolve once a single polling request finishes.
      * It does this by calling the update method of the Poller's operation.
@@ -63947,68 +60268,61 @@ var Poller = /** @class */ (function () {
      *
      * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.poll = function (options) {
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    poll(options = {}) {
         if (!this.pollOncePromise) {
             this.pollOncePromise = this.pollOnce(options);
-            var clearPollOncePromise = function () {
-                _this.pollOncePromise = undefined;
+            const clearPollOncePromise = () => {
+                this.pollOncePromise = undefined;
             };
             this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);
         }
         return this.pollOncePromise;
-    };
+    }
     /**
      * Returns a promise that will resolve once the underlying operation is completed.
      */
-    Poller.prototype.pollUntilDone = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                if (this.stopped) {
-                    this.startPolling().catch(this.reject);
-                }
-                return [2 /*return*/, this.promise];
-            });
-        });
-    };
+    async pollUntilDone() {
+        if (this.stopped) {
+            this.startPolling().catch(this.reject);
+        }
+        return this.promise;
+    }
     /**
      * Invokes the provided callback after each polling is completed,
      * sending the current state of the poller's operation.
      *
      * It returns a method that can be used to stop receiving updates on the given callback function.
      */
-    Poller.prototype.onProgress = function (callback) {
-        var _this = this;
+    onProgress(callback) {
         this.pollProgressCallbacks.push(callback);
-        return function () {
-            _this.pollProgressCallbacks = _this.pollProgressCallbacks.filter(function (c) { return c !== callback; });
+        return () => {
+            this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);
         };
-    };
+    }
     /**
      * Returns true if the poller has finished polling.
      */
-    Poller.prototype.isDone = function () {
-        var state = this.operation.state;
+    isDone() {
+        const state = this.operation.state;
         return Boolean(state.isCompleted || state.isCancelled || state.error);
-    };
+    }
     /**
      * Stops the poller from continuing to poll.
      */
-    Poller.prototype.stopPolling = function () {
+    stopPolling() {
         if (!this.stopped) {
             this.stopped = true;
             if (this.reject) {
                 this.reject(new PollerStoppedError("This poller is already stopped"));
             }
         }
-    };
+    }
     /**
      * Returns true if the poller is stopped.
      */
-    Poller.prototype.isStopped = function () {
+    isStopped() {
         return this.stopped;
-    };
+    }
     /**
      * Attempts to cancel the underlying operation.
      *
@@ -64018,8 +60332,7 @@ var Poller = /** @class */ (function () {
      *
      * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.cancelOperation = function (options) {
-        if (options === void 0) { options = {}; }
+    cancelOperation(options = {}) {
         if (!this.stopped) {
             this.stopped = true;
         }
@@ -64030,7 +60343,7 @@ var Poller = /** @class */ (function () {
             throw new Error("A cancel request is currently pending");
         }
         return this.cancelPromise;
-    };
+    }
     /**
      * Returns the state of the operation.
      *
@@ -64079,29 +60392,379 @@ var Poller = /** @class */ (function () {
      * `../test/utils/testPoller.ts`
      * and look for the getOperationState implementation.
      */
-    Poller.prototype.getOperationState = function () {
+    getOperationState() {
         return this.operation.state;
-    };
+    }
     /**
      * Returns the result value of the operation,
      * regardless of the state of the poller.
      * It can return undefined or an incomplete form of the final TResult value
      * depending on the implementation.
      */
-    Poller.prototype.getResult = function () {
-        var state = this.operation.state;
+    getResult() {
+        const state = this.operation.state;
         return state.result;
-    };
+    }
     /**
      * Returns a serialized version of the poller's operation
      * by invoking the operation's toString method.
      */
-    Poller.prototype.toString = function () {
+    toString() {
         return this.operation.toString();
-    };
-    return Poller;
-}());
+    }
+}
 
+// Copyright (c) Microsoft Corporation.
+/**
+ * The `@azure/logger` configuration for this package.
+ * @internal
+ */
+const logger = logger$1.createClientLogger("core-lro");
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Detects where the continuation token is and returns it. Notice that azure-asyncoperation
+ * must be checked first before the other location headers because there are scenarios
+ * where both azure-asyncoperation and location could be present in the same response but
+ * azure-asyncoperation should be the one to use for polling.
+ */
+function getPollingUrl(rawResponse, defaultPath) {
+    var _a, _b, _c;
+    return ((_c = (_b = (_a = getAzureAsyncOperation(rawResponse)) !== null && _a !== void 0 ? _a : getLocation(rawResponse)) !== null && _b !== void 0 ? _b : getOperationLocation(rawResponse)) !== null && _c !== void 0 ? _c : defaultPath);
+}
+function getLocation(rawResponse) {
+    return rawResponse.headers["location"];
+}
+function getOperationLocation(rawResponse) {
+    return rawResponse.headers["operation-location"];
+}
+function getAzureAsyncOperation(rawResponse) {
+    return rawResponse.headers["azure-asyncoperation"];
+}
+function inferLroMode(requestPath, requestMethod, rawResponse) {
+    if (getAzureAsyncOperation(rawResponse) !== undefined) {
+        return {
+            mode: "AzureAsync",
+            resourceLocation: requestMethod === "PUT"
+                ? requestPath
+                : requestMethod === "POST"
+                    ? getLocation(rawResponse)
+                    : undefined
+        };
+    }
+    else if (getLocation(rawResponse) !== undefined ||
+        getOperationLocation(rawResponse) !== undefined) {
+        return {
+            mode: "Location"
+        };
+    }
+    else if (["PUT", "PATCH"].includes(requestMethod)) {
+        return {
+            mode: "Body"
+        };
+    }
+    return {};
+}
+class SimpleRestError extends Error {
+    constructor(message, statusCode) {
+        super(message);
+        this.name = "RestError";
+        this.statusCode = statusCode;
+        Object.setPrototypeOf(this, SimpleRestError.prototype);
+    }
+}
+function isUnexpectedInitialResponse(rawResponse) {
+    const code = rawResponse.statusCode;
+    if (![203, 204, 202, 201, 200, 500].includes(code)) {
+        throw new SimpleRestError(`Received unexpected HTTP status code ${code} in the initial response. This may indicate a server issue.`, code);
+    }
+    return false;
+}
+function isUnexpectedPollingResponse(rawResponse) {
+    const code = rawResponse.statusCode;
+    if (![202, 201, 200, 500].includes(code)) {
+        throw new SimpleRestError(`Received unexpected HTTP status code ${code} while polling. This may indicate a server issue.`, code);
+    }
+    return false;
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+const successStates = ["succeeded"];
+const failureStates = ["failed", "canceled", "cancelled"];
+
+// Copyright (c) Microsoft Corporation.
+function getResponseStatus(rawResponse) {
+    var _a, _b;
+    const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};
+    return (_b = status === null || status === void 0 ? void 0 : status.toLowerCase()) !== null && _b !== void 0 ? _b : "succeeded";
+}
+function isAzureAsyncPollingDone(rawResponse) {
+    const state = getResponseStatus(rawResponse);
+    if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
+        throw new Error(`The long running operation has failed. The provisioning state: ${state}.`);
+    }
+    return successStates.includes(state);
+}
+/**
+ * Sends a request to the URI of the provisioned resource if needed.
+ */
+async function sendFinalRequest(lro, resourceLocation, lroResourceLocationConfig) {
+    switch (lroResourceLocationConfig) {
+        case "original-uri":
+            return lro.sendPollRequest(lro.requestPath);
+        case "azure-async-operation":
+            return undefined;
+        case "location":
+        default:
+            return lro.sendPollRequest(resourceLocation !== null && resourceLocation !== void 0 ? resourceLocation : lro.requestPath);
+    }
+}
+function processAzureAsyncOperationResult(lro, resourceLocation, lroResourceLocationConfig) {
+    return (response) => {
+        if (isAzureAsyncPollingDone(response.rawResponse)) {
+            if (resourceLocation === undefined) {
+                return Object.assign(Object.assign({}, response), { done: true });
+            }
+            else {
+                return Object.assign(Object.assign({}, response), { done: false, next: async () => {
+                        const finalResponse = await sendFinalRequest(lro, resourceLocation, lroResourceLocationConfig);
+                        return Object.assign(Object.assign({}, (finalResponse !== null && finalResponse !== void 0 ? finalResponse : response)), { done: true });
+                    } });
+            }
+        }
+        return Object.assign(Object.assign({}, response), { done: false });
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+function getProvisioningState(rawResponse) {
+    var _a, _b, _c;
+    const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};
+    const state = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState;
+    return (_c = state === null || state === void 0 ? void 0 : state.toLowerCase()) !== null && _c !== void 0 ? _c : "succeeded";
+}
+function isBodyPollingDone(rawResponse) {
+    const state = getProvisioningState(rawResponse);
+    if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
+        throw new Error(`The long running operation has failed. The provisioning state: ${state}.`);
+    }
+    return successStates.includes(state);
+}
+/**
+ * Creates a polling strategy based on BodyPolling which uses the provisioning state
+ * from the result to determine the current operation state
+ */
+function processBodyPollingOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: isBodyPollingDone(response.rawResponse) });
+}
+
+// Copyright (c) Microsoft Corporation.
+function isLocationPollingDone(rawResponse) {
+    return !isUnexpectedPollingResponse(rawResponse) && rawResponse.statusCode !== 202;
+}
+function processLocationPollingOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: isLocationPollingDone(response.rawResponse) });
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+function processPassthroughOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: true });
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * creates a stepping function that maps an LRO state to another.
+ */
+function createGetLroStatusFromResponse(lroPrimitives, config, lroResourceLocationConfig) {
+    switch (config.mode) {
+        case "AzureAsync": {
+            return processAzureAsyncOperationResult(lroPrimitives, config.resourceLocation, lroResourceLocationConfig);
+        }
+        case "Location": {
+            return processLocationPollingOperationResult;
+        }
+        case "Body": {
+            return processBodyPollingOperationResult;
+        }
+        default: {
+            return processPassthroughOperationResult;
+        }
+    }
+}
+/**
+ * Creates a polling operation.
+ */
+function createPoll(lroPrimitives) {
+    return async (path, pollerConfig, getLroStatusFromResponse) => {
+        const response = await lroPrimitives.sendPollRequest(path);
+        const retryAfter = response.rawResponse.headers["retry-after"];
+        if (retryAfter !== undefined) {
+            const retryAfterInMs = parseInt(retryAfter);
+            pollerConfig.intervalInMs = isNaN(retryAfterInMs)
+                ? calculatePollingIntervalFromDate(new Date(retryAfter), pollerConfig.intervalInMs)
+                : retryAfterInMs;
+        }
+        return getLroStatusFromResponse(response);
+    };
+}
+function calculatePollingIntervalFromDate(retryAfterDate, defaultIntervalInMs) {
+    const timeNow = Math.floor(new Date().getTime());
+    const retryAfterTime = retryAfterDate.getTime();
+    if (timeNow < retryAfterTime) {
+        return retryAfterTime - timeNow;
+    }
+    return defaultIntervalInMs;
+}
+/**
+ * Creates a callback to be used to initialize the polling operation state.
+ * @param state - of the polling operation
+ * @param operationSpec - of the LRO
+ * @param callback - callback to be called when the operation is done
+ * @returns callback that initializes the state of the polling operation
+ */
+function createInitializeState(state, requestPath, requestMethod) {
+    return (response) => {
+        if (isUnexpectedInitialResponse(response.rawResponse))
+            ;
+        state.initialRawResponse = response.rawResponse;
+        state.isStarted = true;
+        state.pollingURL = getPollingUrl(state.initialRawResponse, requestPath);
+        state.config = inferLroMode(requestPath, requestMethod, state.initialRawResponse);
+        /** short circuit polling if body polling is done in the initial request */
+        if (state.config.mode === undefined ||
+            (state.config.mode === "Body" && isBodyPollingDone(state.initialRawResponse))) {
+            state.result = response.flatResponse;
+            state.isCompleted = true;
+        }
+        logger.verbose(`LRO: initial state: ${JSON.stringify(state)}`);
+        return Boolean(state.isCompleted);
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+class GenericPollOperation {
+    constructor(state, lro, lroResourceLocationConfig, processResult, updateState, isDone) {
+        this.state = state;
+        this.lro = lro;
+        this.lroResourceLocationConfig = lroResourceLocationConfig;
+        this.processResult = processResult;
+        this.updateState = updateState;
+        this.isDone = isDone;
+    }
+    setPollerConfig(pollerConfig) {
+        this.pollerConfig = pollerConfig;
+    }
+    /**
+     * General update function for LROPoller, the general process is as follows
+     * 1. Check initial operation result to determine the strategy to use
+     *  - Strategies: Location, Azure-AsyncOperation, Original Uri
+     * 2. Check if the operation result has a terminal state
+     *  - Terminal state will be determined by each strategy
+     *  2.1 If it is terminal state Check if a final GET request is required, if so
+     *      send final GET request and return result from operation. If no final GET
+     *      is required, just return the result from operation.
+     *      - Determining what to call for final request is responsibility of each strategy
+     *  2.2 If it is not terminal state, call the polling operation and go to step 1
+     *      - Determining what to call for polling is responsibility of each strategy
+     *      - Strategies will always use the latest URI for polling if provided otherwise
+     *        the last known one
+     */
+    async update(options) {
+        var _a, _b, _c;
+        const state = this.state;
+        let lastResponse = undefined;
+        if (!state.isStarted) {
+            const initializeState = createInitializeState(state, this.lro.requestPath, this.lro.requestMethod);
+            lastResponse = await this.lro.sendInitialRequest();
+            initializeState(lastResponse);
+        }
+        if (!state.isCompleted) {
+            if (!this.poll || !this.getLroStatusFromResponse) {
+                if (!state.config) {
+                    throw new Error("Bad state: LRO mode is undefined. Please check if the serialized state is well-formed.");
+                }
+                const isDone = this.isDone;
+                this.getLroStatusFromResponse = isDone
+                    ? (response) => (Object.assign(Object.assign({}, response), { done: isDone(response.flatResponse, this.state) }))
+                    : createGetLroStatusFromResponse(this.lro, state.config, this.lroResourceLocationConfig);
+                this.poll = createPoll(this.lro);
+            }
+            if (!state.pollingURL) {
+                throw new Error("Bad state: polling URL is undefined. Please check if the serialized state is well-formed.");
+            }
+            const currentState = await this.poll(state.pollingURL, this.pollerConfig, this.getLroStatusFromResponse);
+            logger.verbose(`LRO: polling response: ${JSON.stringify(currentState.rawResponse)}`);
+            if (currentState.done) {
+                state.result = this.processResult
+                    ? this.processResult(currentState.flatResponse, state)
+                    : currentState.flatResponse;
+                state.isCompleted = true;
+            }
+            else {
+                this.poll = (_a = currentState.next) !== null && _a !== void 0 ? _a : this.poll;
+                state.pollingURL = getPollingUrl(currentState.rawResponse, state.pollingURL);
+            }
+            lastResponse = currentState;
+        }
+        logger.verbose(`LRO: current state: ${JSON.stringify(state)}`);
+        if (lastResponse) {
+            (_b = this.updateState) === null || _b === void 0 ? void 0 : _b.call(this, state, lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.rawResponse);
+        }
+        else {
+            logger.error(`LRO: no response was received`);
+        }
+        (_c = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _c === void 0 ? void 0 : _c.call(options, state);
+        return this;
+    }
+    async cancel() {
+        this.state.isCancelled = true;
+        return this;
+    }
+    /**
+     * Serializes the Poller operation.
+     */
+    toString() {
+        return JSON.stringify({
+            state: this.state
+        });
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+function deserializeState(serializedState) {
+    try {
+        return JSON.parse(serializedState).state;
+    }
+    catch (e) {
+        throw new Error(`LroEngine: Unable to deserialize state: ${serializedState}`);
+    }
+}
+/**
+ * The LRO Engine, a class that performs polling.
+ */
+class LroEngine extends Poller {
+    constructor(lro, options) {
+        const { intervalInMs = 2000, resumeFrom } = options || {};
+        const state = resumeFrom
+            ? deserializeState(resumeFrom)
+            : {};
+        const operation = new GenericPollOperation(state, lro, options === null || options === void 0 ? void 0 : options.lroResourceLocationConfig, options === null || options === void 0 ? void 0 : options.processResult, options === null || options === void 0 ? void 0 : options.updateState, options === null || options === void 0 ? void 0 : options.isDone);
+        super(operation);
+        this.config = { intervalInMs: intervalInMs };
+        operation.setPollerConfig(this.config);
+    }
+    /**
+     * The method used by the poller to wait before attempting to update its operation.
+     */
+    delay() {
+        return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));
+    }
+}
+
+exports.LroEngine = LroEngine;
 exports.Poller = Poller;
 exports.PollerCancelledError = PollerCancelledError;
 exports.PollerStoppedError = PollerStoppedError;
@@ -64682,7 +61345,7 @@ function isProbablyGradleDaemonProblem(packageManager, error) {
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TEXT_MAP_PROPAGATOR = exports.NoopTextMapPropagator = void 0;
+exports.NoopTextMapPropagator = void 0;
 /**
  * No-op implementations of {@link TextMapPropagator}.
  */
@@ -64701,7 +61364,6 @@ var NoopTextMapPropagator = /** @class */ (function () {
     return NoopTextMapPropagator;
 }());
 exports.NoopTextMapPropagator = NoopTextMapPropagator;
-exports.NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();
 //# sourceMappingURL=NoopTextMapPropagator.js.map
 
 /***/ }),
@@ -65115,30 +61777,7 @@ var SpanStatusCode;
 /* 935 */,
 /* 936 */,
 /* 937 */,
-/* 938 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Baggage.js.map
-
-/***/ }),
+/* 938 */,
 /* 939 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -66182,7 +62821,7 @@ exports.exec = exec;
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.isCompatible = exports._makeCompatibilityCheck = void 0;
 var version_1 = __webpack_require__(133);
-var re = /^(\d+)\.(\d+)\.(\d+)(?:-(.*))?$/;
+var re = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;
 /**
  * Create a function to test an API version to see if it is compatible with the provided ownVersion.
  *
@@ -66211,7 +62850,14 @@ function _makeCompatibilityCheck(ownVersion) {
         major: +myVersionMatch[1],
         minor: +myVersionMatch[2],
         patch: +myVersionMatch[3],
+        prerelease: myVersionMatch[4],
     };
+    // if ownVersion has a prerelease tag, versions must match exactly
+    if (ownVersionParsed.prerelease != null) {
+        return function isExactmatch(globalVersion) {
+            return globalVersion === ownVersion;
+        };
+    }
     function _reject(v) {
         rejectedVersions.add(v);
         return false;
@@ -66237,7 +62883,12 @@ function _makeCompatibilityCheck(ownVersion) {
             major: +globalVersionMatch[1],
             minor: +globalVersionMatch[2],
             patch: +globalVersionMatch[3],
+            prerelease: globalVersionMatch[4],
         };
+        // if globalVersion has a prerelease tag, versions must match exactly
+        if (globalVersionParsed.prerelease != null) {
+            return _reject(globalVersion);
+        }
         // major versions must match
         if (ownVersionParsed.major !== globalVersionParsed.major) {
             return _reject(globalVersion);
diff --git a/dist/setup/index.js b/dist/setup/index.js
index d8f0e773..c2fce575 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -881,16 +881,24 @@ exports.NonDocumentTypeChildNodeImpl = NonDocumentTypeChildNodeImpl;
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.PropagationAPI = void 0;
+var global_utils_1 = __webpack_require__(525);
 var NoopTextMapPropagator_1 = __webpack_require__(637);
 var TextMapPropagator_1 = __webpack_require__(649);
-var global_utils_1 = __webpack_require__(525);
+var context_helpers_1 = __webpack_require__(838);
+var utils_1 = __webpack_require__(872);
+var diag_1 = __webpack_require__(118);
 var API_NAME = 'propagation';
+var NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Propagation API
  */
 var PropagationAPI = /** @class */ (function () {
     /** Empty private constructor prevents end users from constructing a new instance of the API */
     function PropagationAPI() {
+        this.createBaggage = utils_1.createBaggage;
+        this.getBaggage = context_helpers_1.getBaggage;
+        this.setBaggage = context_helpers_1.setBaggage;
+        this.deleteBaggage = context_helpers_1.deleteBaggage;
     }
     /** Get the singleton instance of the Propagator API */
     PropagationAPI.getInstance = function () {
@@ -900,11 +908,12 @@ var PropagationAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current propagator. Returns the initialized propagator
+     * Set the current propagator.
+     *
+     * @returns true if the propagator was successfully registered, else false
      */
     PropagationAPI.prototype.setGlobalPropagator = function (propagator) {
-        global_utils_1.registerGlobal(API_NAME, propagator);
-        return propagator;
+        return global_utils_1.registerGlobal(API_NAME, propagator, diag_1.DiagAPI.instance());
     };
     /**
      * Inject context into a carrier to be propagated inter-process
@@ -936,10 +945,10 @@ var PropagationAPI = /** @class */ (function () {
     };
     /** Remove the global propagator */
     PropagationAPI.prototype.disable = function () {
-        global_utils_1.unregisterGlobal(API_NAME);
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
     };
     PropagationAPI.prototype._getGlobalPropagator = function () {
-        return global_utils_1.getGlobal(API_NAME) || NoopTextMapPropagator_1.NOOP_TEXT_MAP_PROPAGATOR;
+        return global_utils_1.getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;
     };
     return PropagationAPI;
 }());
@@ -4222,205 +4231,6 @@ if (typeof Symbol === undefined || !Symbol.asyncIterator) {
 Object.defineProperty(exports, '__esModule', { value: true });
 
 var api = __webpack_require__(440);
-var tslib = __webpack_require__(144);
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-/**
- * A no-op implementation of Span that can safely be used without side-effects.
- */
-var NoOpSpan = /** @class */ (function () {
-    function NoOpSpan() {
-    }
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    NoOpSpan.prototype.context = function () {
-        return {
-            spanId: "",
-            traceId: "",
-            traceFlags: 0 /* NONE */
-        };
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param _endTime - The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    NoOpSpan.prototype.end = function (_endTime) {
-        /* Noop */
-    };
-    /**
-     * Sets an attribute on the Span
-     * @param _key - The attribute key
-     * @param _value - The attribute value
-     */
-    NoOpSpan.prototype.setAttribute = function (_key, _value) {
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param _attributes - The attributes to add
-     */
-    NoOpSpan.prototype.setAttributes = function (_attributes) {
-        return this;
-    };
-    /**
-     * Adds an event to the Span
-     * @param _name - The name of the event
-     * @param _attributes - The associated attributes to add for this event
-     */
-    NoOpSpan.prototype.addEvent = function (_name, _attributes) {
-        return this;
-    };
-    /**
-     * Sets a status on the span. Overrides the default of SpanStatusCode.OK.
-     * @param _status - The status to set.
-     */
-    NoOpSpan.prototype.setStatus = function (_status) {
-        return this;
-    };
-    /**
-     * Updates the name of the Span
-     * @param _name - the new Span name
-     */
-    NoOpSpan.prototype.updateName = function (_name) {
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    NoOpSpan.prototype.isRecording = function () {
-        return false;
-    };
-    /**
-     * Sets exception as a span event
-     * @param exception - the exception the only accepted values are string or Error
-     * @param time - the time to set as Span's event time. If not provided,
-     *     use the current time.
-     */
-    NoOpSpan.prototype.recordException = function (_exception, _time) {
-        /* do nothing */
-    };
-    return NoOpSpan;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A no-op implementation of Tracer that can be used when tracing
- * is disabled.
- */
-var NoOpTracer = /** @class */ (function () {
-    function NoOpTracer() {
-    }
-    /**
-     * Starts a new Span.
-     * @param _name - The name of the span.
-     * @param _options - The SpanOptions used during Span creation.
-     */
-    NoOpTracer.prototype.startSpan = function (_name, _options) {
-        return new NoOpSpan();
-    };
-    /**
-     * Returns the current Span from the current context, if available.
-     */
-    NoOpTracer.prototype.getCurrentSpan = function () {
-        return new NoOpSpan();
-    };
-    /**
-     * Executes the given function within the context provided by a Span.
-     * @param _span - The span that provides the context.
-     * @param fn - The function to be executed.
-     */
-    NoOpTracer.prototype.withSpan = function (_span, fn) {
-        return fn();
-    };
-    /**
-     * Bind a Span as the target's scope
-     * @param target - An object to bind the scope.
-     * @param _span - A specific Span to use. Otherwise, use the current one.
-     */
-    NoOpTracer.prototype.bind = function (target, _span) {
-        return target;
-    };
-    return NoOpTracer;
-}());
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-function getGlobalObject() {
-    return global;
-}
-
-// Copyright (c) Microsoft Corporation.
-// V1 = OpenTelemetry 0.1
-// V2 = OpenTelemetry 0.2
-// V3 = OpenTelemetry 0.6.1
-// V4 = OpenTelemetry 1.0.0-rc.0
-var GLOBAL_TRACER_VERSION = 4;
-// preview5 shipped with @azure/core-tracing.tracerCache
-// and didn't have smart detection for collisions
-var GLOBAL_TRACER_SYMBOL = Symbol.for("@azure/core-tracing.tracerCache3");
-var cache;
-function loadTracerCache() {
-    var globalObj = getGlobalObject();
-    var existingCache = globalObj[GLOBAL_TRACER_SYMBOL];
-    var setGlobalCache = true;
-    if (existingCache) {
-        if (existingCache.version === GLOBAL_TRACER_VERSION) {
-            cache = existingCache;
-        }
-        else {
-            setGlobalCache = false;
-            if (existingCache.tracer) {
-                throw new Error("Two incompatible versions of @azure/core-tracing have been loaded.\n          This library is " + GLOBAL_TRACER_VERSION + ", existing is " + existingCache.version + ".");
-            }
-        }
-    }
-    if (!cache) {
-        cache = {
-            tracer: undefined,
-            version: GLOBAL_TRACER_VERSION
-        };
-    }
-    if (setGlobalCache) {
-        globalObj[GLOBAL_TRACER_SYMBOL] = cache;
-    }
-}
-function getCache() {
-    if (!cache) {
-        loadTracerCache();
-    }
-    return cache;
-}
-
-// Copyright (c) Microsoft Corporation.
-var defaultTracer;
-function getDefaultTracer() {
-    if (!defaultTracer) {
-        defaultTracer = new NoOpTracer();
-    }
-    return defaultTracer;
-}
-/**
- * Sets the global tracer, enabling tracing for the Azure SDK.
- * @param tracer - An OpenTelemetry Tracer instance.
- */
-function setTracer(tracer) {
-    var cache = getCache();
-    cache.tracer = tracer;
-}
-/**
- * Retrieves the active tracer, or returns a
- * no-op implementation if one is not set.
- */
-function getTracer() {
-    var cache = getCache();
-    if (!cache.tracer) {
-        return getDefaultTracer();
-    }
-    return cache.tracer;
-}
 
 // Copyright (c) Microsoft Corporation.
 (function (SpanKind) {
@@ -4455,7 +4265,7 @@ function getTracer() {
  * @param context - context to get span from
  */
 function getSpan(context) {
-    return api.getSpan(context);
+    return api.trace.getSpan(context);
 }
 /**
  * Set the span on a context
@@ -4464,7 +4274,7 @@ function getSpan(context) {
  * @param span - span to set active
  */
 function setSpan(context, span) {
-    return api.setSpan(context, span);
+    return api.trace.setSpan(context, span);
 }
 /**
  * Wrap span context in a NoopSpan and set as span in a new
@@ -4474,7 +4284,7 @@ function setSpan(context, span) {
  * @param spanContext - span context to be wrapped
  */
 function setSpanContext(context, spanContext) {
-    return api.setSpanContext(context, spanContext);
+    return api.trace.setSpanContext(context, spanContext);
 }
 /**
  * Get the span context of the span if it exists.
@@ -4482,10 +4292,24 @@ function setSpanContext(context, spanContext) {
  * @param context - context to get values from
  */
 function getSpanContext(context) {
-    return api.getSpanContext(context);
+    return api.trace.getSpanContext(context);
+}
+/**
+ * Returns true of the given {@link SpanContext} is valid.
+ * A valid {@link SpanContext} is one which has a valid trace ID and span ID as per the spec.
+ *
+ * @param context - the {@link SpanContext} to validate.
+ *
+ * @returns true if the {@link SpanContext} is valid, false otherwise.
+ */
+function isSpanContextValid(context) {
+    return api.trace.isSpanContextValid(context);
+}
+function getTracer(name, version) {
+    return api.trace.getTracer(name || "azure/core-tracing", version);
 }
 /** Entrypoint for context API */
-var context = api.context;
+const context = api.context;
 (function (SpanStatusCode) {
     /**
      * The default status.
@@ -4503,422 +4327,18 @@ var context = api.context;
 })(exports.SpanStatusCode || (exports.SpanStatusCode = {}));
 
 // Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-/**
- * @internal
- */
-var OpenCensusTraceStateWrapper = /** @class */ (function () {
-    function OpenCensusTraceStateWrapper(state) {
-        this._state = state;
+function isTracingDisabled() {
+    var _a;
+    if (typeof process === "undefined") {
+        // not supported in browser for now without polyfills
+        return false;
     }
-    OpenCensusTraceStateWrapper.prototype.get = function (_key) {
-        throw new Error("Method not implemented.");
-    };
-    OpenCensusTraceStateWrapper.prototype.set = function (_key, _value) {
-        throw new Error("Method not implemented.");
-    };
-    OpenCensusTraceStateWrapper.prototype.unset = function (_key) {
-        throw new Error("Method not implemented");
-    };
-    OpenCensusTraceStateWrapper.prototype.serialize = function () {
-        return this._state || "";
-    };
-    return OpenCensusTraceStateWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/** An enumeration of canonical status codes. */
-var CanonicalCode;
-(function (CanonicalCode) {
-    /**
-     * Not an error; returned on success
-     */
-    CanonicalCode[CanonicalCode["OK"] = 0] = "OK";
-    /**
-     * Internal errors.  Means some invariants expected by underlying
-     * system has been broken.  If you see one of these errors,
-     * something is very broken.
-     */
-    CanonicalCode[CanonicalCode["INTERNAL"] = 13] = "INTERNAL";
-})(CanonicalCode || (CanonicalCode = {}));
-function isWrappedSpan(span) {
-    return !!span && span.getWrappedSpan !== undefined;
+    const azureTracingDisabledValue = (_a = process.env.AZURE_TRACING_DISABLED) === null || _a === void 0 ? void 0 : _a.toLowerCase();
+    if (azureTracingDisabledValue === "false" || azureTracingDisabledValue === "0") {
+        return false;
+    }
+    return Boolean(azureTracingDisabledValue);
 }
-function isTracer(tracerOrSpan) {
-    return tracerOrSpan.getWrappedTracer !== undefined;
-}
-/**
- * An implementation of OpenTelemetry Span that wraps an OpenCensus Span.
- */
-var OpenCensusSpanWrapper = /** @class */ (function () {
-    function OpenCensusSpanWrapper(tracerOrSpan, name, options, context$1) {
-        if (name === void 0) { name = ""; }
-        if (options === void 0) { options = {}; }
-        if (isTracer(tracerOrSpan)) {
-            var span = getSpan(context$1 !== null && context$1 !== void 0 ? context$1 : context.active());
-            var parent = isWrappedSpan(span) ? span.getWrappedSpan() : undefined;
-            this._span = tracerOrSpan.getWrappedTracer().startChildSpan({
-                name: name,
-                childOf: parent
-            });
-            this._span.start();
-            if (options.links) {
-                for (var _i = 0, _a = options.links; _i < _a.length; _i++) {
-                    var link = _a[_i];
-                    // Since there is no way to set the link relationship, leave it as Unspecified.
-                    this._span.addLink(link.context.traceId, link.context.spanId, 0 /* LinkType.UNSPECIFIED */, link.attributes);
-                }
-            }
-        }
-        else {
-            this._span = tracerOrSpan;
-        }
-    }
-    /**
-     * The underlying OpenCensus Span
-     */
-    OpenCensusSpanWrapper.prototype.getWrappedSpan = function () {
-        return this._span;
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param endTime - The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    OpenCensusSpanWrapper.prototype.end = function (_endTime) {
-        this._span.end();
-    };
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    OpenCensusSpanWrapper.prototype.context = function () {
-        var openCensusSpanContext = this._span.spanContext;
-        return {
-            spanId: openCensusSpanContext.spanId,
-            traceId: openCensusSpanContext.traceId,
-            traceFlags: openCensusSpanContext.options,
-            traceState: new OpenCensusTraceStateWrapper(openCensusSpanContext.traceState)
-        };
-    };
-    /**
-     * Sets an attribute on the Span
-     * @param key - The attribute key
-     * @param value - The attribute value
-     */
-    OpenCensusSpanWrapper.prototype.setAttribute = function (key, value) {
-        this._span.addAttribute(key, value);
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param attributes - The attributes to add
-     */
-    OpenCensusSpanWrapper.prototype.setAttributes = function (attributes) {
-        this._span.attributes = attributes;
-        return this;
-    };
-    /**
-     * Adds an event to the Span
-     * @param name - The name of the event
-     * @param attributes - The associated attributes to add for this event
-     */
-    OpenCensusSpanWrapper.prototype.addEvent = function (_name, _attributes) {
-        throw new Error("Method not implemented.");
-    };
-    /**
-     * Sets a status on the span. Overrides the default of SpanStatusCode.OK.
-     * @param status - The status to set.
-     */
-    OpenCensusSpanWrapper.prototype.setStatus = function (status) {
-        switch (status.code) {
-            case exports.SpanStatusCode.ERROR: {
-                this._span.setStatus(CanonicalCode.INTERNAL, status.message);
-                break;
-            }
-            case exports.SpanStatusCode.OK: {
-                this._span.setStatus(CanonicalCode.OK, status.message);
-                break;
-            }
-            case exports.SpanStatusCode.UNSET: {
-                break;
-            }
-        }
-        return this;
-    };
-    /**
-     * Updates the name of the Span
-     * @param name - The new Span name
-     */
-    OpenCensusSpanWrapper.prototype.updateName = function (name) {
-        this._span.name = name;
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    OpenCensusSpanWrapper.prototype.isRecording = function () {
-        // NoRecordSpans have an empty traceId
-        return !!this._span.traceId;
-    };
-    /**
-     * Sets exception as a span event
-     * @param exception - the exception the only accepted values are string or Error
-     * @param time - the time to set as Span's event time. If not provided,
-     *     use the current time.
-     */
-    OpenCensusSpanWrapper.prototype.recordException = function (_exception, _time) {
-        throw new Error("Method not implemented");
-    };
-    return OpenCensusSpanWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * An implementation of OpenTelemetry Tracer that wraps an OpenCensus Tracer.
- */
-var OpenCensusTracerWrapper = /** @class */ (function () {
-    /**
-     * Create a new wrapper around a given OpenCensus Tracer.
-     * @param tracer - The OpenCensus Tracer to wrap.
-     */
-    function OpenCensusTracerWrapper(tracer) {
-        this._tracer = tracer;
-    }
-    /**
-     * The wrapped OpenCensus Tracer
-     */
-    OpenCensusTracerWrapper.prototype.getWrappedTracer = function () {
-        return this._tracer;
-    };
-    /**
-     * Starts a new Span.
-     * @param name - The name of the span.
-     * @param options - The SpanOptions used during Span creation.
-     */
-    OpenCensusTracerWrapper.prototype.startSpan = function (name, options) {
-        return new OpenCensusSpanWrapper(this, name, options);
-    };
-    /**
-     * Returns the current Span from the current context, if available.
-     */
-    OpenCensusTracerWrapper.prototype.getCurrentSpan = function () {
-        return undefined;
-    };
-    /**
-     * Executes the given function within the context provided by a Span.
-     * @param _span - The span that provides the context.
-     * @param _fn - The function to be executed.
-     */
-    OpenCensusTracerWrapper.prototype.withSpan = function (_span, _fn) {
-        throw new Error("Method not implemented.");
-    };
-    /**
-     * Bind a Span as the target's scope
-     * @param target - An object to bind the scope.
-     * @param _span - A specific Span to use. Otherwise, use the current one.
-     */
-    OpenCensusTracerWrapper.prototype.bind = function (_target, _span) {
-        throw new Error("Method not implemented.");
-    };
-    return OpenCensusTracerWrapper;
-}());
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A mock span useful for testing.
- */
-var TestSpan = /** @class */ (function (_super) {
-    tslib.__extends(TestSpan, _super);
-    /**
-     * Starts a new Span.
-     * @param parentTracer-  The tracer that created this Span
-     * @param name - The name of the span.
-     * @param context - The SpanContext this span belongs to
-     * @param kind - The SpanKind of this Span
-     * @param parentSpanId - The identifier of the parent Span
-     * @param startTime - The startTime of the event (defaults to now)
-     */
-    function TestSpan(parentTracer, name, context, kind, parentSpanId, startTime) {
-        if (startTime === void 0) { startTime = Date.now(); }
-        var _this = _super.call(this) || this;
-        _this._tracer = parentTracer;
-        _this.name = name;
-        _this.kind = kind;
-        _this.startTime = startTime;
-        _this.parentSpanId = parentSpanId;
-        _this.status = {
-            code: exports.SpanStatusCode.OK
-        };
-        _this.endCalled = false;
-        _this._context = context;
-        _this.attributes = {};
-        return _this;
-    }
-    /**
-     * Returns the Tracer that created this Span
-     */
-    TestSpan.prototype.tracer = function () {
-        return this._tracer;
-    };
-    /**
-     * Returns the SpanContext associated with this Span.
-     */
-    TestSpan.prototype.context = function () {
-        return this._context;
-    };
-    /**
-     * Marks the end of Span execution.
-     * @param _endTime - The time to use as the Span's end time. Defaults to
-     * the current time.
-     */
-    TestSpan.prototype.end = function (_endTime) {
-        this.endCalled = true;
-    };
-    /**
-     * Sets a status on the span. Overrides the default of SpanStatusCode.OK.
-     * @param status - The status to set.
-     */
-    TestSpan.prototype.setStatus = function (status) {
-        this.status = status;
-        return this;
-    };
-    /**
-     * Returns whether this span will be recorded
-     */
-    TestSpan.prototype.isRecording = function () {
-        return true;
-    };
-    /**
-     * Sets an attribute on the Span
-     * @param key - The attribute key
-     * @param value - The attribute value
-     */
-    TestSpan.prototype.setAttribute = function (key, value) {
-        this.attributes[key] = value;
-        return this;
-    };
-    /**
-     * Sets attributes on the Span
-     * @param attributes - The attributes to add
-     */
-    TestSpan.prototype.setAttributes = function (attributes) {
-        for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {
-            var key = _a[_i];
-            this.attributes[key] = attributes[key];
-        }
-        return this;
-    };
-    return TestSpan;
-}(NoOpSpan));
-
-// Copyright (c) Microsoft Corporation.
-/**
- * A mock tracer useful for testing
- */
-var TestTracer = /** @class */ (function (_super) {
-    tslib.__extends(TestTracer, _super);
-    function TestTracer() {
-        var _this = _super !== null && _super.apply(this, arguments) || this;
-        _this.traceIdCounter = 0;
-        _this.spanIdCounter = 0;
-        _this.rootSpans = [];
-        _this.knownSpans = [];
-        return _this;
-    }
-    TestTracer.prototype.getNextTraceId = function () {
-        this.traceIdCounter++;
-        return String(this.traceIdCounter);
-    };
-    TestTracer.prototype.getNextSpanId = function () {
-        this.spanIdCounter++;
-        return String(this.spanIdCounter);
-    };
-    /**
-     * Returns all Spans that were created without a parent
-     */
-    TestTracer.prototype.getRootSpans = function () {
-        return this.rootSpans;
-    };
-    /**
-     * Returns all Spans this Tracer knows about
-     */
-    TestTracer.prototype.getKnownSpans = function () {
-        return this.knownSpans;
-    };
-    /**
-     * Returns all Spans where end() has not been called
-     */
-    TestTracer.prototype.getActiveSpans = function () {
-        return this.knownSpans.filter(function (span) {
-            return !span.endCalled;
-        });
-    };
-    /**
-     * Return all Spans for a particular trace, grouped by their
-     * parent Span in a tree-like structure
-     * @param traceId - The traceId to return the graph for
-     */
-    TestTracer.prototype.getSpanGraph = function (traceId) {
-        var traceSpans = this.knownSpans.filter(function (span) {
-            return span.context().traceId === traceId;
-        });
-        var roots = [];
-        var nodeMap = new Map();
-        for (var _i = 0, traceSpans_1 = traceSpans; _i < traceSpans_1.length; _i++) {
-            var span = traceSpans_1[_i];
-            var spanId = span.context().spanId;
-            var node = {
-                name: span.name,
-                children: []
-            };
-            nodeMap.set(spanId, node);
-            if (span.parentSpanId) {
-                var parent = nodeMap.get(span.parentSpanId);
-                if (!parent) {
-                    throw new Error("Span with name " + node.name + " has an unknown parentSpan with id " + span.parentSpanId);
-                }
-                parent.children.push(node);
-            }
-            else {
-                roots.push(node);
-            }
-        }
-        return {
-            roots: roots
-        };
-    };
-    /**
-     * Starts a new Span.
-     * @param name - The name of the span.
-     * @param options - The SpanOptions used during Span creation.
-     */
-    TestTracer.prototype.startSpan = function (name, options, context$1) {
-        var parentContext = getSpanContext(context$1 || context.active());
-        var traceId;
-        var isRootSpan = false;
-        if (parentContext && parentContext.traceId) {
-            traceId = parentContext.traceId;
-        }
-        else {
-            traceId = this.getNextTraceId();
-            isRootSpan = true;
-        }
-        var spanContext = {
-            traceId: traceId,
-            spanId: this.getNextSpanId(),
-            traceFlags: 0 /* NONE */
-        };
-        var span = new TestSpan(this, name, spanContext, (options === null || options === void 0 ? void 0 : options.kind) || exports.SpanKind.INTERNAL, parentContext ? parentContext.spanId : undefined, options === null || options === void 0 ? void 0 : options.startTime);
-        this.knownSpans.push(span);
-        if (isRootSpan) {
-            this.rootSpans.push(span);
-        }
-        return span;
-    };
-    return TestTracer;
-}(NoOpTracer));
-
-// Copyright (c) Microsoft Corporation.
 /**
  * Creates a function that can be used to create spans using the global tracer.
  *
@@ -4939,22 +4359,28 @@ var TestTracer = /** @class */ (function (_super) {
  */
 function createSpanFunction(args) {
     return function (operationName, operationOptions) {
-        var tracer = getTracer();
-        var tracingOptions = (operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) || {};
-        var spanOptions = tslib.__assign({ kind: exports.SpanKind.INTERNAL }, tracingOptions.spanOptions);
-        var spanName = args.packagePrefix ? args.packagePrefix + "." + operationName : operationName;
-        var span = tracer.startSpan(spanName, spanOptions, tracingOptions.tracingContext);
+        const tracer = getTracer();
+        const tracingOptions = (operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) || {};
+        const spanOptions = Object.assign({ kind: exports.SpanKind.INTERNAL }, tracingOptions.spanOptions);
+        const spanName = args.packagePrefix ? `${args.packagePrefix}.${operationName}` : operationName;
+        let span;
+        if (isTracingDisabled()) {
+            span = api.trace.wrapSpanContext(api.INVALID_SPAN_CONTEXT);
+        }
+        else {
+            span = tracer.startSpan(spanName, spanOptions, tracingOptions.tracingContext);
+        }
         if (args.namespace) {
             span.setAttribute("az.namespace", args.namespace);
         }
-        var newSpanOptions = tracingOptions.spanOptions || {};
+        let newSpanOptions = tracingOptions.spanOptions || {};
         if (span.isRecording() && args.namespace) {
-            newSpanOptions = tslib.__assign(tslib.__assign({}, tracingOptions.spanOptions), { attributes: tslib.__assign(tslib.__assign({}, spanOptions.attributes), { "az.namespace": args.namespace }) });
+            newSpanOptions = Object.assign(Object.assign({}, tracingOptions.spanOptions), { attributes: Object.assign(Object.assign({}, spanOptions.attributes), { "az.namespace": args.namespace }) });
         }
-        var newTracingOptions = tslib.__assign(tslib.__assign({}, tracingOptions), { spanOptions: newSpanOptions, tracingContext: setSpan(tracingOptions.tracingContext || context.active(), span) });
-        var newOperationOptions = tslib.__assign(tslib.__assign({}, operationOptions), { tracingOptions: newTracingOptions });
+        const newTracingOptions = Object.assign(Object.assign({}, tracingOptions), { spanOptions: newSpanOptions, tracingContext: setSpan(tracingOptions.tracingContext || context.active(), span) });
+        const newOperationOptions = Object.assign(Object.assign({}, operationOptions), { tracingOptions: newTracingOptions });
         return {
-            span: span,
+            span,
             updatedOptions: newOperationOptions
         };
     };
@@ -4962,26 +4388,26 @@ function createSpanFunction(args) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var VERSION = "00";
+const VERSION = "00";
 /**
  * Generates a `SpanContext` given a `traceparent` header value.
  * @param traceParent - Serialized span context data as a `traceparent` header value.
  * @returns The `SpanContext` generated from the `traceparent` value.
  */
 function extractSpanContextFromTraceParentHeader(traceParentHeader) {
-    var parts = traceParentHeader.split("-");
+    const parts = traceParentHeader.split("-");
     if (parts.length !== 4) {
         return;
     }
-    var version = parts[0], traceId = parts[1], spanId = parts[2], traceOptions = parts[3];
+    const [version, traceId, spanId, traceOptions] = parts;
     if (version !== VERSION) {
         return;
     }
-    var traceFlags = parseInt(traceOptions, 16);
-    var spanContext = {
-        spanId: spanId,
-        traceId: traceId,
-        traceFlags: traceFlags
+    const traceFlags = parseInt(traceOptions, 16);
+    const spanContext = {
+        spanId,
+        traceId,
+        traceFlags
     };
     return spanContext;
 }
@@ -4991,7 +4417,7 @@ function extractSpanContextFromTraceParentHeader(traceParentHeader) {
  * @returns The `spanContext` represented as a `traceparent` value.
  */
 function getTraceParentHeader(spanContext) {
-    var missingFields = [];
+    const missingFields = [];
     if (!spanContext.traceId) {
         missingFields.push("traceId");
     }
@@ -5001,19 +4427,13 @@ function getTraceParentHeader(spanContext) {
     if (missingFields.length) {
         return;
     }
-    var flags = spanContext.traceFlags || 0 /* NONE */;
-    var hexFlags = flags.toString(16);
-    var traceFlags = hexFlags.length === 1 ? "0" + hexFlags : hexFlags;
+    const flags = spanContext.traceFlags || 0 /* NONE */;
+    const hexFlags = flags.toString(16);
+    const traceFlags = hexFlags.length === 1 ? `0${hexFlags}` : hexFlags;
     // https://www.w3.org/TR/trace-context/#traceparent-header-field-values
-    return VERSION + "-" + spanContext.traceId + "-" + spanContext.spanId + "-" + traceFlags;
+    return `${VERSION}-${spanContext.traceId}-${spanContext.spanId}-${traceFlags}`;
 }
 
-exports.NoOpSpan = NoOpSpan;
-exports.NoOpTracer = NoOpTracer;
-exports.OpenCensusSpanWrapper = OpenCensusSpanWrapper;
-exports.OpenCensusTracerWrapper = OpenCensusTracerWrapper;
-exports.TestSpan = TestSpan;
-exports.TestTracer = TestTracer;
 exports.context = context;
 exports.createSpanFunction = createSpanFunction;
 exports.extractSpanContextFromTraceParentHeader = extractSpanContextFromTraceParentHeader;
@@ -5021,9 +4441,9 @@ exports.getSpan = getSpan;
 exports.getSpanContext = getSpanContext;
 exports.getTraceParentHeader = getTraceParentHeader;
 exports.getTracer = getTracer;
+exports.isSpanContextValid = isSpanContextValid;
 exports.setSpan = setSpan;
 exports.setSpanContext = setSpanContext;
-exports.setTracer = setTracer;
 //# sourceMappingURL=index.js.map
 
 
@@ -5111,17 +4531,16 @@ module.exports = new Type('tag:yaml.org,2002:pairs', {
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var __spreadArrays = (this && this.__spreadArrays) || function () {
-    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-    for (var r = Array(s), k = 0, i = 0; i < il; i++)
-        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-            r[k] = a[j];
-    return r;
+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
+    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+        to[j] = from[i];
+    return to;
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.ContextAPI = void 0;
 var NoopContextManager_1 = __webpack_require__(754);
 var global_utils_1 = __webpack_require__(525);
+var diag_1 = __webpack_require__(118);
 var API_NAME = 'context';
 var NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();
 /**
@@ -5139,11 +4558,12 @@ var ContextAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current context manager. Returns the initialized context manager
+     * Set the current context manager.
+     *
+     * @returns true if the context manager was successfully registered, else false
      */
     ContextAPI.prototype.setGlobalContextManager = function (contextManager) {
-        global_utils_1.registerGlobal(API_NAME, contextManager);
-        return contextManager;
+        return global_utils_1.registerGlobal(API_NAME, contextManager, diag_1.DiagAPI.instance());
     };
     /**
      * Get the currently active context
@@ -5165,17 +4585,16 @@ var ContextAPI = /** @class */ (function () {
         for (var _i = 3; _i < arguments.length; _i++) {
             args[_i - 3] = arguments[_i];
         }
-        return (_a = this._getContextManager()).with.apply(_a, __spreadArrays([context, fn, thisArg], args));
+        return (_a = this._getContextManager()).with.apply(_a, __spreadArray([context, fn, thisArg], args));
     };
     /**
      * Bind a context to a target function or event emitter
      *
-     * @param target function or event emitter to bind
      * @param context context to bind to the event emitter or function. Defaults to the currently active context
+     * @param target function or event emitter to bind
      */
-    ContextAPI.prototype.bind = function (target, context) {
-        if (context === void 0) { context = this.active(); }
-        return this._getContextManager().bind(target, context);
+    ContextAPI.prototype.bind = function (context, target) {
+        return this._getContextManager().bind(context, target);
     };
     ContextAPI.prototype._getContextManager = function () {
         return global_utils_1.getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;
@@ -5183,7 +4602,7 @@ var ContextAPI = /** @class */ (function () {
     /** Disable and remove the global context manager */
     ContextAPI.prototype.disable = function () {
         this._getContextManager().disable();
-        global_utils_1.unregisterGlobal(API_NAME);
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
     };
     return ContextAPI;
 }());
@@ -9180,48 +8599,36 @@ exports.eventTarget_removeAllEventListeners = eventTarget_removeAllEventListener
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
-/*!
- * Copyright (c) Microsoft and contributors. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- * 
- * Azure Core LRO SDK for JavaScript - 1.0.5
- */
 
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
-var tslib = __webpack_require__(725);
+var logger$1 = __webpack_require__(492);
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * When a poller is manually stopped through the `stopPolling` method,
  * the poller will be rejected with an instance of the PollerStoppedError.
  */
-var PollerStoppedError = /** @class */ (function (_super) {
-    tslib.__extends(PollerStoppedError, _super);
-    function PollerStoppedError(message) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "PollerStoppedError";
-        Object.setPrototypeOf(_this, PollerStoppedError.prototype);
-        return _this;
+class PollerStoppedError extends Error {
+    constructor(message) {
+        super(message);
+        this.name = "PollerStoppedError";
+        Object.setPrototypeOf(this, PollerStoppedError.prototype);
     }
-    return PollerStoppedError;
-}(Error));
+}
 /**
  * When a poller is cancelled through the `cancelOperation` method,
  * the poller will be rejected with an instance of the PollerCancelledError.
  */
-var PollerCancelledError = /** @class */ (function (_super) {
-    tslib.__extends(PollerCancelledError, _super);
-    function PollerCancelledError(message) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "PollerCancelledError";
-        Object.setPrototypeOf(_this, PollerCancelledError.prototype);
-        return _this;
+class PollerCancelledError extends Error {
+    constructor(message) {
+        super(message);
+        this.name = "PollerCancelledError";
+        Object.setPrototypeOf(this, PollerCancelledError.prototype);
     }
-    return PollerCancelledError;
-}(Error));
+}
 /**
  * A class that represents the definition of a program that polls through consecutive requests
  * until it reaches a state of completion.
@@ -9284,7 +8691,7 @@ var PollerCancelledError = /** @class */ (function (_super) {
  *
  */
 // eslint-disable-next-line no-use-before-define
-var Poller = /** @class */ (function () {
+class Poller {
     /**
      * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation<TState, TResult>`.
      *
@@ -9350,19 +8757,18 @@ var Poller = /** @class */ (function () {
      *
      * @param operation - Must contain the basic properties of `PollOperation<State, TResult>`.
      */
-    function Poller(operation) {
-        var _this = this;
+    constructor(operation) {
         this.stopped = true;
         this.pollProgressCallbacks = [];
         this.operation = operation;
-        this.promise = new Promise(function (resolve, reject) {
-            _this.resolve = resolve;
-            _this.reject = reject;
+        this.promise = new Promise((resolve, reject) => {
+            this.resolve = resolve;
+            this.reject = reject;
         });
         // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.
         // The above warning would get thrown if `poller.poll` is called, it returns an error,
         // and pullUntilDone did not have a .catch or await try/catch on it's return value.
-        this.promise.catch(function () {
+        this.promise.catch(() => {
             /* intentionally blank */
         });
     }
@@ -9371,29 +8777,15 @@ var Poller = /** @class */ (function () {
      * Starts a loop that will break only if the poller is done
      * or if the poller is stopped.
      */
-    Poller.prototype.startPolling = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (this.stopped) {
-                            this.stopped = false;
-                        }
-                        _a.label = 1;
-                    case 1:
-                        if (!(!this.isStopped() && !this.isDone())) return [3 /*break*/, 4];
-                        return [4 /*yield*/, this.poll()];
-                    case 2:
-                        _a.sent();
-                        return [4 /*yield*/, this.delay()];
-                    case 3:
-                        _a.sent();
-                        return [3 /*break*/, 1];
-                    case 4: return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async startPolling() {
+        if (this.stopped) {
+            this.stopped = false;
+        }
+        while (!this.isStopped() && !this.isDone()) {
+            await this.poll();
+            await this.delay();
+        }
+    }
     /**
      * @internal
      * pollOnce does one polling, by calling to the update method of the underlying
@@ -9403,44 +8795,31 @@ var Poller = /** @class */ (function () {
      *
      * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.pollOnce = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _b.trys.push([0, 3, , 4]);
-                        if (!!this.isDone()) return [3 /*break*/, 2];
-                        _a = this;
-                        return [4 /*yield*/, this.operation.update({
-                                abortSignal: options.abortSignal,
-                                fireProgress: this.fireProgress.bind(this)
-                            })];
-                    case 1:
-                        _a.operation = _b.sent();
-                        if (this.isDone() && this.resolve) {
-                            // If the poller has finished polling, this means we now have a result.
-                            // However, it can be the case that TResult is instantiated to void, so
-                            // we are not expecting a result anyway. To assert that we might not
-                            // have a result eventually after finishing polling, we cast the result
-                            // to TResult.
-                            this.resolve(this.operation.state.result);
-                        }
-                        _b.label = 2;
-                    case 2: return [3 /*break*/, 4];
-                    case 3:
-                        e_1 = _b.sent();
-                        this.operation.state.error = e_1;
-                        if (this.reject) {
-                            this.reject(e_1);
-                        }
-                        throw e_1;
-                    case 4: return [2 /*return*/];
+    async pollOnce(options = {}) {
+        try {
+            if (!this.isDone()) {
+                this.operation = await this.operation.update({
+                    abortSignal: options.abortSignal,
+                    fireProgress: this.fireProgress.bind(this)
+                });
+                if (this.isDone() && this.resolve) {
+                    // If the poller has finished polling, this means we now have a result.
+                    // However, it can be the case that TResult is instantiated to void, so
+                    // we are not expecting a result anyway. To assert that we might not
+                    // have a result eventually after finishing polling, we cast the result
+                    // to TResult.
+                    this.resolve(this.operation.state.result);
                 }
-            });
-        });
-    };
+            }
+        }
+        catch (e) {
+            this.operation.state.error = e;
+            if (this.reject) {
+                this.reject(e);
+            }
+            throw e;
+        }
+    }
     /**
      * @internal
      * fireProgress calls the functions passed in via onProgress the method of the poller.
@@ -9450,36 +8829,22 @@ var Poller = /** @class */ (function () {
      *
      * @param state - The current operation state.
      */
-    Poller.prototype.fireProgress = function (state) {
-        for (var _i = 0, _a = this.pollProgressCallbacks; _i < _a.length; _i++) {
-            var callback = _a[_i];
+    fireProgress(state) {
+        for (const callback of this.pollProgressCallbacks) {
             callback(state);
         }
-    };
+    }
     /**
      * @internal
      * Invokes the underlying operation's cancel method, and rejects the
      * pollUntilDone promise.
      */
-    Poller.prototype.cancelOnce = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = this;
-                        return [4 /*yield*/, this.operation.cancel(options)];
-                    case 1:
-                        _a.operation = _b.sent();
-                        if (this.reject) {
-                            this.reject(new PollerCancelledError("Poller cancelled"));
-                        }
-                        return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async cancelOnce(options = {}) {
+        this.operation = await this.operation.cancel(options);
+        if (this.reject) {
+            this.reject(new PollerCancelledError("Poller cancelled"));
+        }
+    }
     /**
      * Returns a promise that will resolve once a single polling request finishes.
      * It does this by calling the update method of the Poller's operation.
@@ -9488,68 +8853,61 @@ var Poller = /** @class */ (function () {
      *
      * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.poll = function (options) {
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    poll(options = {}) {
         if (!this.pollOncePromise) {
             this.pollOncePromise = this.pollOnce(options);
-            var clearPollOncePromise = function () {
-                _this.pollOncePromise = undefined;
+            const clearPollOncePromise = () => {
+                this.pollOncePromise = undefined;
             };
             this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);
         }
         return this.pollOncePromise;
-    };
+    }
     /**
      * Returns a promise that will resolve once the underlying operation is completed.
      */
-    Poller.prototype.pollUntilDone = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                if (this.stopped) {
-                    this.startPolling().catch(this.reject);
-                }
-                return [2 /*return*/, this.promise];
-            });
-        });
-    };
+    async pollUntilDone() {
+        if (this.stopped) {
+            this.startPolling().catch(this.reject);
+        }
+        return this.promise;
+    }
     /**
      * Invokes the provided callback after each polling is completed,
      * sending the current state of the poller's operation.
      *
      * It returns a method that can be used to stop receiving updates on the given callback function.
      */
-    Poller.prototype.onProgress = function (callback) {
-        var _this = this;
+    onProgress(callback) {
         this.pollProgressCallbacks.push(callback);
-        return function () {
-            _this.pollProgressCallbacks = _this.pollProgressCallbacks.filter(function (c) { return c !== callback; });
+        return () => {
+            this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);
         };
-    };
+    }
     /**
      * Returns true if the poller has finished polling.
      */
-    Poller.prototype.isDone = function () {
-        var state = this.operation.state;
+    isDone() {
+        const state = this.operation.state;
         return Boolean(state.isCompleted || state.isCancelled || state.error);
-    };
+    }
     /**
      * Stops the poller from continuing to poll.
      */
-    Poller.prototype.stopPolling = function () {
+    stopPolling() {
         if (!this.stopped) {
             this.stopped = true;
             if (this.reject) {
                 this.reject(new PollerStoppedError("This poller is already stopped"));
             }
         }
-    };
+    }
     /**
      * Returns true if the poller is stopped.
      */
-    Poller.prototype.isStopped = function () {
+    isStopped() {
         return this.stopped;
-    };
+    }
     /**
      * Attempts to cancel the underlying operation.
      *
@@ -9559,8 +8917,7 @@ var Poller = /** @class */ (function () {
      *
      * @param options - Optional properties passed to the operation's update method.
      */
-    Poller.prototype.cancelOperation = function (options) {
-        if (options === void 0) { options = {}; }
+    cancelOperation(options = {}) {
         if (!this.stopped) {
             this.stopped = true;
         }
@@ -9571,7 +8928,7 @@ var Poller = /** @class */ (function () {
             throw new Error("A cancel request is currently pending");
         }
         return this.cancelPromise;
-    };
+    }
     /**
      * Returns the state of the operation.
      *
@@ -9620,29 +8977,379 @@ var Poller = /** @class */ (function () {
      * `../test/utils/testPoller.ts`
      * and look for the getOperationState implementation.
      */
-    Poller.prototype.getOperationState = function () {
+    getOperationState() {
         return this.operation.state;
-    };
+    }
     /**
      * Returns the result value of the operation,
      * regardless of the state of the poller.
      * It can return undefined or an incomplete form of the final TResult value
      * depending on the implementation.
      */
-    Poller.prototype.getResult = function () {
-        var state = this.operation.state;
+    getResult() {
+        const state = this.operation.state;
         return state.result;
-    };
+    }
     /**
      * Returns a serialized version of the poller's operation
      * by invoking the operation's toString method.
      */
-    Poller.prototype.toString = function () {
+    toString() {
         return this.operation.toString();
-    };
-    return Poller;
-}());
+    }
+}
 
+// Copyright (c) Microsoft Corporation.
+/**
+ * The `@azure/logger` configuration for this package.
+ * @internal
+ */
+const logger = logger$1.createClientLogger("core-lro");
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Detects where the continuation token is and returns it. Notice that azure-asyncoperation
+ * must be checked first before the other location headers because there are scenarios
+ * where both azure-asyncoperation and location could be present in the same response but
+ * azure-asyncoperation should be the one to use for polling.
+ */
+function getPollingUrl(rawResponse, defaultPath) {
+    var _a, _b, _c;
+    return ((_c = (_b = (_a = getAzureAsyncOperation(rawResponse)) !== null && _a !== void 0 ? _a : getLocation(rawResponse)) !== null && _b !== void 0 ? _b : getOperationLocation(rawResponse)) !== null && _c !== void 0 ? _c : defaultPath);
+}
+function getLocation(rawResponse) {
+    return rawResponse.headers["location"];
+}
+function getOperationLocation(rawResponse) {
+    return rawResponse.headers["operation-location"];
+}
+function getAzureAsyncOperation(rawResponse) {
+    return rawResponse.headers["azure-asyncoperation"];
+}
+function inferLroMode(requestPath, requestMethod, rawResponse) {
+    if (getAzureAsyncOperation(rawResponse) !== undefined) {
+        return {
+            mode: "AzureAsync",
+            resourceLocation: requestMethod === "PUT"
+                ? requestPath
+                : requestMethod === "POST"
+                    ? getLocation(rawResponse)
+                    : undefined
+        };
+    }
+    else if (getLocation(rawResponse) !== undefined ||
+        getOperationLocation(rawResponse) !== undefined) {
+        return {
+            mode: "Location"
+        };
+    }
+    else if (["PUT", "PATCH"].includes(requestMethod)) {
+        return {
+            mode: "Body"
+        };
+    }
+    return {};
+}
+class SimpleRestError extends Error {
+    constructor(message, statusCode) {
+        super(message);
+        this.name = "RestError";
+        this.statusCode = statusCode;
+        Object.setPrototypeOf(this, SimpleRestError.prototype);
+    }
+}
+function isUnexpectedInitialResponse(rawResponse) {
+    const code = rawResponse.statusCode;
+    if (![203, 204, 202, 201, 200, 500].includes(code)) {
+        throw new SimpleRestError(`Received unexpected HTTP status code ${code} in the initial response. This may indicate a server issue.`, code);
+    }
+    return false;
+}
+function isUnexpectedPollingResponse(rawResponse) {
+    const code = rawResponse.statusCode;
+    if (![202, 201, 200, 500].includes(code)) {
+        throw new SimpleRestError(`Received unexpected HTTP status code ${code} while polling. This may indicate a server issue.`, code);
+    }
+    return false;
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+const successStates = ["succeeded"];
+const failureStates = ["failed", "canceled", "cancelled"];
+
+// Copyright (c) Microsoft Corporation.
+function getResponseStatus(rawResponse) {
+    var _a, _b;
+    const { status } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};
+    return (_b = status === null || status === void 0 ? void 0 : status.toLowerCase()) !== null && _b !== void 0 ? _b : "succeeded";
+}
+function isAzureAsyncPollingDone(rawResponse) {
+    const state = getResponseStatus(rawResponse);
+    if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
+        throw new Error(`The long running operation has failed. The provisioning state: ${state}.`);
+    }
+    return successStates.includes(state);
+}
+/**
+ * Sends a request to the URI of the provisioned resource if needed.
+ */
+async function sendFinalRequest(lro, resourceLocation, lroResourceLocationConfig) {
+    switch (lroResourceLocationConfig) {
+        case "original-uri":
+            return lro.sendPollRequest(lro.requestPath);
+        case "azure-async-operation":
+            return undefined;
+        case "location":
+        default:
+            return lro.sendPollRequest(resourceLocation !== null && resourceLocation !== void 0 ? resourceLocation : lro.requestPath);
+    }
+}
+function processAzureAsyncOperationResult(lro, resourceLocation, lroResourceLocationConfig) {
+    return (response) => {
+        if (isAzureAsyncPollingDone(response.rawResponse)) {
+            if (resourceLocation === undefined) {
+                return Object.assign(Object.assign({}, response), { done: true });
+            }
+            else {
+                return Object.assign(Object.assign({}, response), { done: false, next: async () => {
+                        const finalResponse = await sendFinalRequest(lro, resourceLocation, lroResourceLocationConfig);
+                        return Object.assign(Object.assign({}, (finalResponse !== null && finalResponse !== void 0 ? finalResponse : response)), { done: true });
+                    } });
+            }
+        }
+        return Object.assign(Object.assign({}, response), { done: false });
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+function getProvisioningState(rawResponse) {
+    var _a, _b, _c;
+    const { properties, provisioningState } = (_a = rawResponse.body) !== null && _a !== void 0 ? _a : {};
+    const state = (_b = properties === null || properties === void 0 ? void 0 : properties.provisioningState) !== null && _b !== void 0 ? _b : provisioningState;
+    return (_c = state === null || state === void 0 ? void 0 : state.toLowerCase()) !== null && _c !== void 0 ? _c : "succeeded";
+}
+function isBodyPollingDone(rawResponse) {
+    const state = getProvisioningState(rawResponse);
+    if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
+        throw new Error(`The long running operation has failed. The provisioning state: ${state}.`);
+    }
+    return successStates.includes(state);
+}
+/**
+ * Creates a polling strategy based on BodyPolling which uses the provisioning state
+ * from the result to determine the current operation state
+ */
+function processBodyPollingOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: isBodyPollingDone(response.rawResponse) });
+}
+
+// Copyright (c) Microsoft Corporation.
+function isLocationPollingDone(rawResponse) {
+    return !isUnexpectedPollingResponse(rawResponse) && rawResponse.statusCode !== 202;
+}
+function processLocationPollingOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: isLocationPollingDone(response.rawResponse) });
+}
+
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+function processPassthroughOperationResult(response) {
+    return Object.assign(Object.assign({}, response), { done: true });
+}
+
+// Copyright (c) Microsoft Corporation.
+/**
+ * creates a stepping function that maps an LRO state to another.
+ */
+function createGetLroStatusFromResponse(lroPrimitives, config, lroResourceLocationConfig) {
+    switch (config.mode) {
+        case "AzureAsync": {
+            return processAzureAsyncOperationResult(lroPrimitives, config.resourceLocation, lroResourceLocationConfig);
+        }
+        case "Location": {
+            return processLocationPollingOperationResult;
+        }
+        case "Body": {
+            return processBodyPollingOperationResult;
+        }
+        default: {
+            return processPassthroughOperationResult;
+        }
+    }
+}
+/**
+ * Creates a polling operation.
+ */
+function createPoll(lroPrimitives) {
+    return async (path, pollerConfig, getLroStatusFromResponse) => {
+        const response = await lroPrimitives.sendPollRequest(path);
+        const retryAfter = response.rawResponse.headers["retry-after"];
+        if (retryAfter !== undefined) {
+            const retryAfterInMs = parseInt(retryAfter);
+            pollerConfig.intervalInMs = isNaN(retryAfterInMs)
+                ? calculatePollingIntervalFromDate(new Date(retryAfter), pollerConfig.intervalInMs)
+                : retryAfterInMs;
+        }
+        return getLroStatusFromResponse(response);
+    };
+}
+function calculatePollingIntervalFromDate(retryAfterDate, defaultIntervalInMs) {
+    const timeNow = Math.floor(new Date().getTime());
+    const retryAfterTime = retryAfterDate.getTime();
+    if (timeNow < retryAfterTime) {
+        return retryAfterTime - timeNow;
+    }
+    return defaultIntervalInMs;
+}
+/**
+ * Creates a callback to be used to initialize the polling operation state.
+ * @param state - of the polling operation
+ * @param operationSpec - of the LRO
+ * @param callback - callback to be called when the operation is done
+ * @returns callback that initializes the state of the polling operation
+ */
+function createInitializeState(state, requestPath, requestMethod) {
+    return (response) => {
+        if (isUnexpectedInitialResponse(response.rawResponse))
+            ;
+        state.initialRawResponse = response.rawResponse;
+        state.isStarted = true;
+        state.pollingURL = getPollingUrl(state.initialRawResponse, requestPath);
+        state.config = inferLroMode(requestPath, requestMethod, state.initialRawResponse);
+        /** short circuit polling if body polling is done in the initial request */
+        if (state.config.mode === undefined ||
+            (state.config.mode === "Body" && isBodyPollingDone(state.initialRawResponse))) {
+            state.result = response.flatResponse;
+            state.isCompleted = true;
+        }
+        logger.verbose(`LRO: initial state: ${JSON.stringify(state)}`);
+        return Boolean(state.isCompleted);
+    };
+}
+
+// Copyright (c) Microsoft Corporation.
+class GenericPollOperation {
+    constructor(state, lro, lroResourceLocationConfig, processResult, updateState, isDone) {
+        this.state = state;
+        this.lro = lro;
+        this.lroResourceLocationConfig = lroResourceLocationConfig;
+        this.processResult = processResult;
+        this.updateState = updateState;
+        this.isDone = isDone;
+    }
+    setPollerConfig(pollerConfig) {
+        this.pollerConfig = pollerConfig;
+    }
+    /**
+     * General update function for LROPoller, the general process is as follows
+     * 1. Check initial operation result to determine the strategy to use
+     *  - Strategies: Location, Azure-AsyncOperation, Original Uri
+     * 2. Check if the operation result has a terminal state
+     *  - Terminal state will be determined by each strategy
+     *  2.1 If it is terminal state Check if a final GET request is required, if so
+     *      send final GET request and return result from operation. If no final GET
+     *      is required, just return the result from operation.
+     *      - Determining what to call for final request is responsibility of each strategy
+     *  2.2 If it is not terminal state, call the polling operation and go to step 1
+     *      - Determining what to call for polling is responsibility of each strategy
+     *      - Strategies will always use the latest URI for polling if provided otherwise
+     *        the last known one
+     */
+    async update(options) {
+        var _a, _b, _c;
+        const state = this.state;
+        let lastResponse = undefined;
+        if (!state.isStarted) {
+            const initializeState = createInitializeState(state, this.lro.requestPath, this.lro.requestMethod);
+            lastResponse = await this.lro.sendInitialRequest();
+            initializeState(lastResponse);
+        }
+        if (!state.isCompleted) {
+            if (!this.poll || !this.getLroStatusFromResponse) {
+                if (!state.config) {
+                    throw new Error("Bad state: LRO mode is undefined. Please check if the serialized state is well-formed.");
+                }
+                const isDone = this.isDone;
+                this.getLroStatusFromResponse = isDone
+                    ? (response) => (Object.assign(Object.assign({}, response), { done: isDone(response.flatResponse, this.state) }))
+                    : createGetLroStatusFromResponse(this.lro, state.config, this.lroResourceLocationConfig);
+                this.poll = createPoll(this.lro);
+            }
+            if (!state.pollingURL) {
+                throw new Error("Bad state: polling URL is undefined. Please check if the serialized state is well-formed.");
+            }
+            const currentState = await this.poll(state.pollingURL, this.pollerConfig, this.getLroStatusFromResponse);
+            logger.verbose(`LRO: polling response: ${JSON.stringify(currentState.rawResponse)}`);
+            if (currentState.done) {
+                state.result = this.processResult
+                    ? this.processResult(currentState.flatResponse, state)
+                    : currentState.flatResponse;
+                state.isCompleted = true;
+            }
+            else {
+                this.poll = (_a = currentState.next) !== null && _a !== void 0 ? _a : this.poll;
+                state.pollingURL = getPollingUrl(currentState.rawResponse, state.pollingURL);
+            }
+            lastResponse = currentState;
+        }
+        logger.verbose(`LRO: current state: ${JSON.stringify(state)}`);
+        if (lastResponse) {
+            (_b = this.updateState) === null || _b === void 0 ? void 0 : _b.call(this, state, lastResponse === null || lastResponse === void 0 ? void 0 : lastResponse.rawResponse);
+        }
+        else {
+            logger.error(`LRO: no response was received`);
+        }
+        (_c = options === null || options === void 0 ? void 0 : options.fireProgress) === null || _c === void 0 ? void 0 : _c.call(options, state);
+        return this;
+    }
+    async cancel() {
+        this.state.isCancelled = true;
+        return this;
+    }
+    /**
+     * Serializes the Poller operation.
+     */
+    toString() {
+        return JSON.stringify({
+            state: this.state
+        });
+    }
+}
+
+// Copyright (c) Microsoft Corporation.
+function deserializeState(serializedState) {
+    try {
+        return JSON.parse(serializedState).state;
+    }
+    catch (e) {
+        throw new Error(`LroEngine: Unable to deserialize state: ${serializedState}`);
+    }
+}
+/**
+ * The LRO Engine, a class that performs polling.
+ */
+class LroEngine extends Poller {
+    constructor(lro, options) {
+        const { intervalInMs = 2000, resumeFrom } = options || {};
+        const state = resumeFrom
+            ? deserializeState(resumeFrom)
+            : {};
+        const operation = new GenericPollOperation(state, lro, options === null || options === void 0 ? void 0 : options.lroResourceLocationConfig, options === null || options === void 0 ? void 0 : options.processResult, options === null || options === void 0 ? void 0 : options.updateState, options === null || options === void 0 ? void 0 : options.isDone);
+        super(operation);
+        this.config = { intervalInMs: intervalInMs };
+        operation.setPollerConfig(this.config);
+    }
+    /**
+     * The method used by the poller to wait before attempting to update its operation.
+     */
+    delay() {
+        return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));
+    }
+}
+
+exports.LroEngine = LroEngine;
 exports.Poller = Poller;
 exports.PollerCancelledError = PollerCancelledError;
 exports.PollerStoppedError = PollerStoppedError;
@@ -10065,6 +9772,7 @@ exports.saveCache = saveCache;
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.DiagAPI = void 0;
+var ComponentLogger_1 = __webpack_require__(362);
 var logLevelLogger_1 = __webpack_require__(673);
 var types_1 = __webpack_require__(360);
 var global_utils_1 = __webpack_require__(525);
@@ -10095,7 +9803,7 @@ var DiagAPI = /** @class */ (function () {
         var self = this;
         // DiagAPI specific functions
         self.setLogger = function (logger, logLevel) {
-            var _a;
+            var _a, _b;
             if (logLevel === void 0) { logLevel = types_1.DiagLogLevel.INFO; }
             if (logger === self) {
                 // There isn't much we can do here.
@@ -10103,12 +9811,23 @@ var DiagAPI = /** @class */ (function () {
                 // Try to log to self. If a logger was previously registered it will receive the log.
                 var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');
                 self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);
-                return;
+                return false;
             }
-            global_utils_1.registerGlobal('diag', logLevelLogger_1.createLogLevelDiagLogger(logLevel, logger), true);
+            var oldLogger = global_utils_1.getGlobal('diag');
+            var newLogger = logLevelLogger_1.createLogLevelDiagLogger(logLevel, logger);
+            // There already is an logger registered. We'll let it know before overwriting it.
+            if (oldLogger) {
+                var stack = (_b = new Error().stack) !== null && _b !== void 0 ? _b : '<failed to generate stacktrace>';
+                oldLogger.warn("Current logger will be overwritten from " + stack);
+                newLogger.warn("Current logger will overwrite one already registered from " + stack);
+            }
+            return global_utils_1.registerGlobal('diag', newLogger, self, true);
         };
         self.disable = function () {
-            global_utils_1.unregisterGlobal(API_NAME);
+            global_utils_1.unregisterGlobal(API_NAME, self);
+        };
+        self.createComponentLogger = function (options) {
+            return new ComponentLogger_1.DiagComponentLogger(options);
         };
         self.verbose = _logProxy('verbose');
         self.debug = _logProxy('debug');
@@ -10705,7 +10424,7 @@ module.exports = require("child_process");
 /* 130 */,
 /* 131 */,
 /* 132 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
+/***/ (function(__unusedmodule, exports) {
 
 "use strict";
 
@@ -10725,109 +10444,15 @@ module.exports = require("child_process");
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.ROOT_CONTEXT = exports.createContextKey = exports.setBaggage = exports.getBaggage = exports.isInstrumentationSuppressed = exports.unsuppressInstrumentation = exports.suppressInstrumentation = exports.getSpanContext = exports.setSpanContext = exports.setSpan = exports.getSpan = void 0;
-var NoopSpan_1 = __webpack_require__(767);
-/**
- * span key
- */
-var SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');
-/**
- * Shared key for indicating if instrumentation should be suppressed beyond
- * this current scope.
- */
-var SUPPRESS_INSTRUMENTATION_KEY = createContextKey('OpenTelemetry Context Key SUPPRESS_INSTRUMENTATION');
-/**
- * Baggage key
- */
-var BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');
-/**
- * Return the span if one exists
- *
- * @param context context to get span from
- */
-function getSpan(context) {
-    return context.getValue(SPAN_KEY) || undefined;
-}
-exports.getSpan = getSpan;
-/**
- * Set the span on a context
- *
- * @param context context to use as parent
- * @param span span to set active
- */
-function setSpan(context, span) {
-    return context.setValue(SPAN_KEY, span);
-}
-exports.setSpan = setSpan;
-/**
- * Wrap span context in a NoopSpan and set as span in a new
- * context
- *
- * @param context context to set active span on
- * @param spanContext span context to be wrapped
- */
-function setSpanContext(context, spanContext) {
-    return setSpan(context, new NoopSpan_1.NoopSpan(spanContext));
-}
-exports.setSpanContext = setSpanContext;
-/**
- * Get the span context of the span if it exists.
- *
- * @param context context to get values from
- */
-function getSpanContext(context) {
-    var _a;
-    return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.context();
-}
-exports.getSpanContext = getSpanContext;
-/**
- * Sets value on context to indicate that instrumentation should
- * be suppressed beyond this current scope.
- *
- * @param context context to set the suppress instrumentation value on.
- */
-function suppressInstrumentation(context) {
-    return context.setValue(SUPPRESS_INSTRUMENTATION_KEY, true);
-}
-exports.suppressInstrumentation = suppressInstrumentation;
-/**
- * Sets value on context to indicate that instrumentation should
- * no-longer be suppressed beyond this current scope.
- *
- * @param context context to set the suppress instrumentation value on.
- */
-function unsuppressInstrumentation(context) {
-    return context.setValue(SUPPRESS_INSTRUMENTATION_KEY, false);
-}
-exports.unsuppressInstrumentation = unsuppressInstrumentation;
-/**
- * Return current suppress instrumentation value for the given context,
- * if it exists.
- *
- * @param context context check for the suppress instrumentation value.
- */
-function isInstrumentationSuppressed(context) {
-    return Boolean(context.getValue(SUPPRESS_INSTRUMENTATION_KEY));
-}
-exports.isInstrumentationSuppressed = isInstrumentationSuppressed;
-/**
- * @param {Context} Context that manage all context values
- * @returns {Baggage} Extracted baggage from the context
- */
-function getBaggage(context) {
-    return context.getValue(BAGGAGE_KEY) || undefined;
-}
-exports.getBaggage = getBaggage;
-/**
- * @param {Context} Context that manage all context values
- * @param {Baggage} baggage that will be set in the actual context
- */
-function setBaggage(context, baggage) {
-    return context.setValue(BAGGAGE_KEY, baggage);
-}
-exports.setBaggage = setBaggage;
+exports.ROOT_CONTEXT = exports.createContextKey = void 0;
 /** Get a key to uniquely identify a context value */
 function createContextKey(description) {
+    // The specification states that for the same input, multiple calls should
+    // return different keys. Due to the nature of the JS dependency management
+    // system, this creates problems where multiple versions of some package
+    // could hold different keys for the same property.
+    //
+    // Therefore, we use Symbol.for which returns the same key for the same input.
     return Symbol.for(description);
 }
 exports.createContextKey = createContextKey;
@@ -10883,7 +10508,7 @@ exports.ROOT_CONTEXT = new BaseContext();
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.VERSION = void 0;
 // this is autogenerated file, see scripts/version-update.js
-exports.VERSION = '1.0.0-rc.0';
+exports.VERSION = '1.0.2';
 //# sourceMappingURL=version.js.map
 
 /***/ }),
@@ -11822,314 +11447,104 @@ module.exports = parseOptions
 
 /***/ }),
 /* 144 */
-/***/ (function(module) {
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+"use strict";
+
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+}) : (function(o, m, k, k2) {
+    if (k2 === undefined) k2 = k;
+    o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+    Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+    o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+    __setModuleDefault(result, mod);
+    return result;
+};
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.LocalDistribution = void 0;
+const tc = __importStar(__webpack_require__(139));
+const core = __importStar(__webpack_require__(470));
+const fs_1 = __importDefault(__webpack_require__(747));
+const path_1 = __importDefault(__webpack_require__(622));
+const base_installer_1 = __webpack_require__(83);
+const util_1 = __webpack_require__(322);
+const constants_1 = __webpack_require__(211);
+class LocalDistribution extends base_installer_1.JavaBase {
+    constructor(installerOptions, jdkFile) {
+        super('jdkfile', installerOptions);
+        this.jdkFile = jdkFile;
+    }
+    setupJava() {
+        return __awaiter(this, void 0, void 0, function* () {
+            let foundJava = this.findInToolcache();
+            if (foundJava) {
+                core.info(`Resolved Java ${foundJava.version} from tool-cache`);
+            }
+            else {
+                core.info(`Java ${this.version} was not found in tool-cache. Trying to unpack JDK file...`);
+                if (!this.jdkFile) {
+                    throw new Error("'jdkFile' is not specified");
+                }
+                const jdkFilePath = path_1.default.resolve(this.jdkFile);
+                const stats = fs_1.default.statSync(jdkFilePath);
+                if (!stats.isFile()) {
+                    throw new Error(`JDK file was not found in path '${jdkFilePath}'`);
+                }
+                core.info(`Extracting Java from '${jdkFilePath}'`);
+                const extractedJavaPath = yield util_1.extractJdkFile(jdkFilePath);
+                const archiveName = fs_1.default.readdirSync(extractedJavaPath)[0];
+                const archivePath = path_1.default.join(extractedJavaPath, archiveName);
+                const javaVersion = this.version;
+                let javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, this.getToolcacheVersionName(javaVersion), this.architecture);
+                // for different Java distributions, postfix can exist or not so need to check both cases
+                if (process.platform === 'darwin' &&
+                    fs_1.default.existsSync(path_1.default.join(javaPath, constants_1.MACOS_JAVA_CONTENT_POSTFIX))) {
+                    javaPath = path_1.default.join(javaPath, constants_1.MACOS_JAVA_CONTENT_POSTFIX);
+                }
+                foundJava = {
+                    version: javaVersion,
+                    path: javaPath
+                };
+            }
+            core.info(`Setting Java ${foundJava.version} as default`);
+            this.setJavaDefault(foundJava.version, foundJava.path);
+            return foundJava;
+        });
+    }
+    findPackageForDownload(version) {
+        return __awaiter(this, void 0, void 0, function* () {
+            throw new Error('This method should not be implemented in local file provider');
+        });
+    }
+    downloadTool(javaRelease) {
+        return __awaiter(this, void 0, void 0, function* () {
+            throw new Error('This method should not be implemented in local file provider');
+        });
+    }
+}
+exports.LocalDistribution = LocalDistribution;
 
 
 /***/ }),
@@ -14529,9 +13944,10 @@ module.exports = require("punycode");
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TRACER = exports.NoopTracer = void 0;
-var context_1 = __webpack_require__(132);
-var NoopSpan_1 = __webpack_require__(767);
+exports.NoopTracer = void 0;
+var __1 = __webpack_require__(440);
+var context_utils_1 = __webpack_require__(969);
+var NonRecordingSpan_1 = __webpack_require__(437);
 var spancontext_utils_1 = __webpack_require__(453);
 /**
  * No-op implementations of {@link Tracer}.
@@ -14543,17 +13959,41 @@ var NoopTracer = /** @class */ (function () {
     NoopTracer.prototype.startSpan = function (name, options, context) {
         var root = Boolean(options === null || options === void 0 ? void 0 : options.root);
         if (root) {
-            return new NoopSpan_1.NoopSpan();
+            return new NonRecordingSpan_1.NonRecordingSpan();
         }
-        var parentFromContext = context && context_1.getSpanContext(context);
+        var parentFromContext = context && context_utils_1.getSpanContext(context);
         if (isSpanContext(parentFromContext) &&
             spancontext_utils_1.isSpanContextValid(parentFromContext)) {
-            return new NoopSpan_1.NoopSpan(parentFromContext);
+            return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);
         }
         else {
-            return new NoopSpan_1.NoopSpan();
+            return new NonRecordingSpan_1.NonRecordingSpan();
         }
     };
+    NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) {
+        var opts;
+        var ctx;
+        var fn;
+        if (arguments.length < 2) {
+            return;
+        }
+        else if (arguments.length === 2) {
+            fn = arg2;
+        }
+        else if (arguments.length === 3) {
+            opts = arg2;
+            fn = arg3;
+        }
+        else {
+            opts = arg2;
+            ctx = arg3;
+            fn = arg4;
+        }
+        var parentContext = ctx !== null && ctx !== void 0 ? ctx : __1.context.active();
+        var span = this.startSpan(name, opts, parentContext);
+        var contextWithSpanSet = context_utils_1.setSpan(parentContext, span);
+        return __1.context.with(contextWithSpanSet, fn, undefined, span);
+    };
     return NoopTracer;
 }());
 exports.NoopTracer = NoopTracer;
@@ -14563,7 +14003,6 @@ function isSpanContext(spanContext) {
         typeof spanContext['traceId'] === 'string' &&
         typeof spanContext['traceFlags'] === 'number');
 }
-exports.NOOP_TRACER = new NoopTracer();
 //# sourceMappingURL=NoopTracer.js.map
 
 /***/ }),
@@ -14631,7 +14070,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TRACER_PROVIDER = exports.NoopTracerProvider = void 0;
+exports.NoopTracerProvider = void 0;
 var NoopTracer_1 = __webpack_require__(216);
 /**
  * An implementation of the {@link TracerProvider} which returns an impotent
@@ -14643,12 +14082,11 @@ var NoopTracerProvider = /** @class */ (function () {
     function NoopTracerProvider() {
     }
     NoopTracerProvider.prototype.getTracer = function (_name, _version) {
-        return NoopTracer_1.NOOP_TRACER;
+        return new NoopTracer_1.NoopTracer();
     };
     return NoopTracerProvider;
 }());
 exports.NoopTracerProvider = NoopTracerProvider;
-exports.NOOP_TRACER_PROVIDER = new NoopTracerProvider();
 //# sourceMappingURL=NoopTracerProvider.js.map
 
 /***/ }),
@@ -16294,312 +15732,312 @@ module.exports = intersects
 /* 262 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -19405,7 +18843,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
 
 function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
 
-var tslib = __webpack_require__(909);
 var uuid = __webpack_require__(585);
 var tough = __webpack_require__(929);
 var http = __webpack_require__(605);
@@ -19418,6 +18855,7 @@ var url = __webpack_require__(835);
 var stream = __webpack_require__(794);
 var logger$1 = __webpack_require__(492);
 var tunnel = __webpack_require__(856);
+var tslib = __webpack_require__(909);
 var coreAuth = __webpack_require__(229);
 var xml2js = __webpack_require__(992);
 var os = __webpack_require__(87);
@@ -19434,7 +18872,7 @@ function getHeaderKey(headerName) {
 }
 function isHttpHeadersLike(object) {
     if (object && typeof object === "object") {
-        var castObject = object;
+        const castObject = object;
         if (typeof castObject.rawHeaders === "function" &&
             typeof castObject.clone === "function" &&
             typeof castObject.get === "function" &&
@@ -19453,11 +18891,11 @@ function isHttpHeadersLike(object) {
 /**
  * A collection of HTTP header key/value pairs.
  */
-var HttpHeaders = /** @class */ (function () {
-    function HttpHeaders(rawHeaders) {
+class HttpHeaders {
+    constructor(rawHeaders) {
         this._headersMap = {};
         if (rawHeaders) {
-            for (var headerName in rawHeaders) {
+            for (const headerName in rawHeaders) {
                 this.set(headerName, rawHeaders[headerName]);
             }
         }
@@ -19468,100 +18906,99 @@ var HttpHeaders = /** @class */ (function () {
      * @param headerName - The name of the header to set. This value is case-insensitive.
      * @param headerValue - The value of the header to set.
      */
-    HttpHeaders.prototype.set = function (headerName, headerValue) {
+    set(headerName, headerValue) {
         this._headersMap[getHeaderKey(headerName)] = {
             name: headerName,
             value: headerValue.toString()
         };
-    };
+    }
     /**
      * Get the header value for the provided header name, or undefined if no header exists in this
      * collection with the provided name.
      * @param headerName - The name of the header.
      */
-    HttpHeaders.prototype.get = function (headerName) {
-        var header = this._headersMap[getHeaderKey(headerName)];
+    get(headerName) {
+        const header = this._headersMap[getHeaderKey(headerName)];
         return !header ? undefined : header.value;
-    };
+    }
     /**
      * Get whether or not this header collection contains a header entry for the provided header name.
      */
-    HttpHeaders.prototype.contains = function (headerName) {
+    contains(headerName) {
         return !!this._headersMap[getHeaderKey(headerName)];
-    };
+    }
     /**
      * Remove the header with the provided headerName. Return whether or not the header existed and
      * was removed.
      * @param headerName - The name of the header to remove.
      */
-    HttpHeaders.prototype.remove = function (headerName) {
-        var result = this.contains(headerName);
+    remove(headerName) {
+        const result = this.contains(headerName);
         delete this._headersMap[getHeaderKey(headerName)];
         return result;
-    };
+    }
     /**
      * Get the headers that are contained this collection as an object.
      */
-    HttpHeaders.prototype.rawHeaders = function () {
-        var result = {};
-        for (var headerKey in this._headersMap) {
-            var header = this._headersMap[headerKey];
+    rawHeaders() {
+        const result = {};
+        for (const headerKey in this._headersMap) {
+            const header = this._headersMap[headerKey];
             result[header.name.toLowerCase()] = header.value;
         }
         return result;
-    };
+    }
     /**
      * Get the headers that are contained in this collection as an array.
      */
-    HttpHeaders.prototype.headersArray = function () {
-        var headers = [];
-        for (var headerKey in this._headersMap) {
+    headersArray() {
+        const headers = [];
+        for (const headerKey in this._headersMap) {
             headers.push(this._headersMap[headerKey]);
         }
         return headers;
-    };
+    }
     /**
      * Get the header names that are contained in this collection.
      */
-    HttpHeaders.prototype.headerNames = function () {
-        var headerNames = [];
-        var headers = this.headersArray();
-        for (var i = 0; i < headers.length; ++i) {
+    headerNames() {
+        const headerNames = [];
+        const headers = this.headersArray();
+        for (let i = 0; i < headers.length; ++i) {
             headerNames.push(headers[i].name);
         }
         return headerNames;
-    };
+    }
     /**
      * Get the header values that are contained in this collection.
      */
-    HttpHeaders.prototype.headerValues = function () {
-        var headerValues = [];
-        var headers = this.headersArray();
-        for (var i = 0; i < headers.length; ++i) {
+    headerValues() {
+        const headerValues = [];
+        const headers = this.headersArray();
+        for (let i = 0; i < headers.length; ++i) {
             headerValues.push(headers[i].value);
         }
         return headerValues;
-    };
+    }
     /**
      * Get the JSON object representation of this HTTP header collection.
      */
-    HttpHeaders.prototype.toJson = function () {
+    toJson() {
         return this.rawHeaders();
-    };
+    }
     /**
      * Get the string representation of this HTTP header collection.
      */
-    HttpHeaders.prototype.toString = function () {
+    toString() {
         return JSON.stringify(this.toJson());
-    };
+    }
     /**
      * Create a deep clone/copy of this HttpHeaders collection.
      */
-    HttpHeaders.prototype.clone = function () {
+    clone() {
         return new HttpHeaders(this.rawHeaders());
-    };
-    return HttpHeaders;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -19579,7 +19016,7 @@ function encodeString(value) {
 function encodeByteArray(value) {
     // Buffer.from accepts <ArrayBuffer> | <SharedArrayBuffer>-- the TypeScript definition is off here
     // https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length
-    var bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
+    const bufferValue = value instanceof Buffer ? value : Buffer.from(value.buffer);
     return bufferValue.toString("base64");
 }
 /**
@@ -19592,11 +19029,11 @@ function decodeString(value) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var Constants = {
+const Constants = {
     /**
      * The core-http version
      */
-    coreHttpVersion: "1.2.6",
+    coreHttpVersion: "2.1.0",
     /**
      * Specifies HTTP.
      */
@@ -19635,7 +19072,8 @@ var Constants = {
             PATCH: "PATCH"
         },
         StatusCodes: {
-            TooManyRequests: 429
+            TooManyRequests: 429,
+            ServiceUnavailable: 503
         }
     },
     /**
@@ -19665,18 +19103,18 @@ var Constants = {
 /**
  * Default key used to access the XML attributes.
  */
-var XML_ATTRKEY = "$";
+const XML_ATTRKEY = "$";
 /**
  * Default key used to access the XML value content.
  */
-var XML_CHARKEY = "_";
+const XML_CHARKEY = "_";
 
 // Copyright (c) Microsoft Corporation.
-var validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;
+const validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;
 /**
  * A constant that indicates whether the environment is node.js or browser based.
  */
-var isNode = typeof process !== "undefined" &&
+const isNode = typeof process !== "undefined" &&
     !!process.version &&
     !!process.versions &&
     !!process.versions.node;
@@ -19702,7 +19140,7 @@ function encodeUri(uri) {
  * @returns The stripped version of Http Response.
  */
 function stripResponse(response) {
-    var strippedResponse = {};
+    const strippedResponse = {};
     strippedResponse.body = response.bodyAsText;
     strippedResponse.headers = response.headers;
     strippedResponse.status = response.status;
@@ -19716,7 +19154,7 @@ function stripResponse(response) {
  * @returns The stripped version of Http Request.
  */
 function stripRequest(request) {
-    var strippedRequest = request.clone();
+    const strippedRequest = request.clone();
     if (strippedRequest.headers) {
         strippedRequest.headers.remove("authorization");
     }
@@ -19749,21 +19187,12 @@ function generateUuid() {
  * @returns A chain of resolved or rejected promises
  */
 function executePromisesSequentially(promiseFactories, kickstart) {
-    var result = Promise.resolve(kickstart);
-    promiseFactories.forEach(function (promiseFactory) {
+    let result = Promise.resolve(kickstart);
+    promiseFactories.forEach((promiseFactory) => {
         result = result.then(promiseFactory);
     });
     return result;
 }
-/**
- * A wrapper for setTimeout that resolves a promise after t milliseconds.
- * @param t - The number of milliseconds to be delayed.
- * @param value - The value to be resolved with after a timeout of t milliseconds.
- * @returns Resolved promise
- */
-function delay(t, value) {
-    return new Promise(function (resolve) { return setTimeout(function () { return resolve(value); }, t); });
-}
 /**
  * Converts a Promise to a callback.
  * @param promise - The Promise to be converted to a callback
@@ -19776,13 +19205,13 @@ function promiseToCallback(promise) {
         throw new Error("The provided input is not a Promise.");
     }
     // eslint-disable-next-line @typescript-eslint/ban-types
-    return function (cb) {
+    return (cb) => {
         promise
-            .then(function (data) {
+            .then((data) => {
             // eslint-disable-next-line promise/no-callback-in-promise
             return cb(undefined, data);
         })
-            .catch(function (err) {
+            .catch((err) => {
             // eslint-disable-next-line promise/no-callback-in-promise
             cb(err);
         });
@@ -19797,26 +19226,25 @@ function promiseToServiceCallback(promise) {
     if (typeof promise.then !== "function") {
         throw new Error("The provided input is not a Promise.");
     }
-    return function (cb) {
+    return (cb) => {
         promise
-            .then(function (data) {
+            .then((data) => {
             return process.nextTick(cb, undefined, data.parsedBody, data.request, data);
         })
-            .catch(function (err) {
+            .catch((err) => {
             process.nextTick(cb, err);
         });
     };
 }
 function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {
-    var _a, _b, _c;
     if (!Array.isArray(obj)) {
         obj = [obj];
     }
     if (!xmlNamespaceKey || !xmlNamespace) {
-        return _a = {}, _a[elementName] = obj, _a;
+        return { [elementName]: obj };
     }
-    var result = (_b = {}, _b[elementName] = obj, _b);
-    result[XML_ATTRKEY] = (_c = {}, _c[xmlNamespaceKey] = xmlNamespace, _c);
+    const result = { [elementName]: obj };
+    result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };
     return result;
 }
 /**
@@ -19825,14 +19253,14 @@ function prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {
  * @param sourceCtors - An array of source objects from which the properties need to be taken.
  */
 function applyMixins(targetCtorParam, sourceCtors) {
-    var castTargetCtorParam = targetCtorParam;
-    sourceCtors.forEach(function (sourceCtor) {
-        Object.getOwnPropertyNames(sourceCtor.prototype).forEach(function (name) {
+    const castTargetCtorParam = targetCtorParam;
+    sourceCtors.forEach((sourceCtor) => {
+        Object.getOwnPropertyNames(sourceCtor.prototype).forEach((name) => {
             castTargetCtorParam.prototype[name] = sourceCtor.prototype[name];
         });
     });
 }
-var validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
+const validateISODuration = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
 /**
  * Indicates whether the given string is in ISO 8601 format.
  * @param value - The value to be validated for ISO 8601 duration format.
@@ -19882,19 +19310,18 @@ function isObject(input) {
 }
 
 // Copyright (c) Microsoft Corporation.
-var Serializer = /** @class */ (function () {
-    function Serializer(modelMappers, isXML) {
-        if (modelMappers === void 0) { modelMappers = {}; }
+class Serializer {
+    constructor(modelMappers = {}, isXML) {
         this.modelMappers = modelMappers;
         this.isXML = isXML;
     }
-    Serializer.prototype.validateConstraints = function (mapper, value, objectName) {
-        var failValidation = function (constraintName, constraintValue) {
-            throw new Error("\"" + objectName + "\" with value \"" + value + "\" should satisfy the constraint \"" + constraintName + "\": " + constraintValue + ".");
+    validateConstraints(mapper, value, objectName) {
+        const failValidation = (constraintName, constraintValue) => {
+            throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`);
         };
         if (mapper.constraints && value != undefined) {
-            var valueAsNumber = value;
-            var _a = mapper.constraints, ExclusiveMaximum = _a.ExclusiveMaximum, ExclusiveMinimum = _a.ExclusiveMinimum, InclusiveMaximum = _a.InclusiveMaximum, InclusiveMinimum = _a.InclusiveMinimum, MaxItems = _a.MaxItems, MaxLength = _a.MaxLength, MinItems = _a.MinItems, MinLength = _a.MinLength, MultipleOf = _a.MultipleOf, Pattern = _a.Pattern, UniqueItems = _a.UniqueItems;
+            const valueAsNumber = value;
+            const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems } = mapper.constraints;
             if (ExclusiveMaximum != undefined && valueAsNumber >= ExclusiveMaximum) {
                 failValidation("ExclusiveMaximum", ExclusiveMaximum);
             }
@@ -19907,7 +19334,7 @@ var Serializer = /** @class */ (function () {
             if (InclusiveMinimum != undefined && valueAsNumber < InclusiveMinimum) {
                 failValidation("InclusiveMinimum", InclusiveMinimum);
             }
-            var valueAsArray = value;
+            const valueAsArray = value;
             if (MaxItems != undefined && valueAsArray.length > MaxItems) {
                 failValidation("MaxItems", MaxItems);
             }
@@ -19924,17 +19351,17 @@ var Serializer = /** @class */ (function () {
                 failValidation("MultipleOf", MultipleOf);
             }
             if (Pattern) {
-                var pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern;
+                const pattern = typeof Pattern === "string" ? new RegExp(Pattern) : Pattern;
                 if (typeof value !== "string" || value.match(pattern) === null) {
                     failValidation("Pattern", Pattern);
                 }
             }
             if (UniqueItems &&
-                valueAsArray.some(function (item, i, ar) { return ar.indexOf(item) !== i; })) {
+                valueAsArray.some((item, i, ar) => ar.indexOf(item) !== i)) {
                 failValidation("UniqueItems", UniqueItems);
             }
         }
-    };
+    }
     /**
      * Serialize the given object based on its metadata defined in the mapper
      *
@@ -19944,16 +19371,15 @@ var Serializer = /** @class */ (function () {
      * @param options - additional options to deserialization
      * @returns A valid serialized Javascript object
      */
-    Serializer.prototype.serialize = function (mapper, object, objectName, options) {
+    serialize(mapper, object, objectName, options = {}) {
         var _a, _b, _c;
-        if (options === void 0) { options = {}; }
-        var updatedOptions = {
+        const updatedOptions = {
             rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
             includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
             xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
         };
-        var payload = {};
-        var mapperType = mapper.type.name;
+        let payload = {};
+        const mapperType = mapper.type.name;
         if (!objectName) {
             objectName = mapper.serializedName;
         }
@@ -19972,15 +19398,15 @@ var Serializer = /** @class */ (function () {
         //      true || null      | undefined/null
         //     false || X         | undefined
         // undefined || X         | undefined/null
-        var required = mapper.required, nullable = mapper.nullable;
+        const { required, nullable } = mapper;
         if (required && nullable && object === undefined) {
-            throw new Error(objectName + " cannot be undefined.");
+            throw new Error(`${objectName} cannot be undefined.`);
         }
         if (required && !nullable && object == undefined) {
-            throw new Error(objectName + " cannot be null or undefined.");
+            throw new Error(`${objectName} cannot be null or undefined.`);
         }
         if (!required && nullable === false && object === null) {
-            throw new Error(objectName + " cannot be null.");
+            throw new Error(`${objectName} cannot be null.`);
         }
         if (object == undefined) {
             payload = object;
@@ -19995,7 +19421,7 @@ var Serializer = /** @class */ (function () {
                 payload = serializeBasicTypes(mapperType, objectName, object);
             }
             else if (mapperType.match(/^Enum$/i) !== null) {
-                var enumMapper = mapper;
+                const enumMapper = mapper;
                 payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);
             }
             else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {
@@ -20018,7 +19444,7 @@ var Serializer = /** @class */ (function () {
             }
         }
         return payload;
-    };
+    }
     /**
      * Deserialize the given object based on its metadata defined in the mapper
      *
@@ -20028,10 +19454,9 @@ var Serializer = /** @class */ (function () {
      * @param options - Controls behavior of XML parser and builder.
      * @returns A valid deserialized Javascript object
      */
-    Serializer.prototype.deserialize = function (mapper, responseBody, objectName, options) {
+    deserialize(mapper, responseBody, objectName, options = {}) {
         var _a, _b, _c;
-        if (options === void 0) { options = {}; }
-        var updatedOptions = {
+        const updatedOptions = {
             rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
             includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
             xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
@@ -20049,8 +19474,8 @@ var Serializer = /** @class */ (function () {
             }
             return responseBody;
         }
-        var payload;
-        var mapperType = mapper.type.name;
+        let payload;
+        const mapperType = mapper.type.name;
         if (!objectName) {
             objectName = mapper.serializedName;
         }
@@ -20059,8 +19484,8 @@ var Serializer = /** @class */ (function () {
         }
         else {
             if (this.isXML) {
-                var xmlCharKey = updatedOptions.xmlCharKey;
-                var castResponseBody = responseBody;
+                const xmlCharKey = updatedOptions.xmlCharKey;
+                const castResponseBody = responseBody;
                 /**
                  * If the mapper specifies this as a non-composite type value but the responseBody contains
                  * both header ("$" i.e., XML_ATTRKEY) and body ("#" i.e., XML_CHARKEY) properties,
@@ -20114,11 +19539,10 @@ var Serializer = /** @class */ (function () {
             payload = mapper.defaultValue;
         }
         return payload;
-    };
-    return Serializer;
-}());
+    }
+}
 function trimEnd(str, ch) {
-    var len = str.length;
+    let len = str.length;
     while (len - 1 >= 0 && str[len - 1] === ch) {
         --len;
     }
@@ -20129,10 +19553,10 @@ function bufferToBase64Url(buffer) {
         return undefined;
     }
     if (!(buffer instanceof Uint8Array)) {
-        throw new Error("Please provide an input of type Uint8Array for converting to Base64Url.");
+        throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);
     }
     // Uint8Array to Base64.
-    var str = encodeByteArray(buffer);
+    const str = encodeByteArray(buffer);
     // Base64 to Base64Url.
     return trimEnd(str, "=")
         .replace(/\+/g, "-")
@@ -20151,12 +19575,11 @@ function base64UrlToByteArray(str) {
     return decodeString(str);
 }
 function splitSerializeName(prop) {
-    var classes = [];
-    var partialclass = "";
+    const classes = [];
+    let partialclass = "";
     if (prop) {
-        var subwords = prop.split(".");
-        for (var _i = 0, subwords_1 = subwords; _i < subwords_1.length; _i++) {
-            var item = subwords_1[_i];
+        const subwords = prop.split(".");
+        for (const item of subwords) {
             if (item.charAt(item.length - 1) === "\\") {
                 partialclass += item.substr(0, item.length - 1) + ".";
             }
@@ -20188,32 +19611,32 @@ function serializeBasicTypes(typeName, objectName, value) {
     if (value !== null && value !== undefined) {
         if (typeName.match(/^Number$/i) !== null) {
             if (typeof value !== "number") {
-                throw new Error(objectName + " with value " + value + " must be of type number.");
+                throw new Error(`${objectName} with value ${value} must be of type number.`);
             }
         }
         else if (typeName.match(/^String$/i) !== null) {
             if (typeof value.valueOf() !== "string") {
-                throw new Error(objectName + " with value \"" + value + "\" must be of type string.");
+                throw new Error(`${objectName} with value "${value}" must be of type string.`);
             }
         }
         else if (typeName.match(/^Uuid$/i) !== null) {
             if (!(typeof value.valueOf() === "string" && isValidUuid(value))) {
-                throw new Error(objectName + " with value \"" + value + "\" must be of type string and a valid uuid.");
+                throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`);
             }
         }
         else if (typeName.match(/^Boolean$/i) !== null) {
             if (typeof value !== "boolean") {
-                throw new Error(objectName + " with value " + value + " must be of type boolean.");
+                throw new Error(`${objectName} with value ${value} must be of type boolean.`);
             }
         }
         else if (typeName.match(/^Stream$/i) !== null) {
-            var objectType = typeof value;
+            const objectType = typeof value;
             if (objectType !== "string" &&
                 objectType !== "function" &&
                 !(value instanceof ArrayBuffer) &&
                 !ArrayBuffer.isView(value) &&
                 !((typeof Blob === "function" || typeof Blob === "object") && value instanceof Blob)) {
-                throw new Error(objectName + " must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.");
+                throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, or a function returning NodeJS.ReadableStream.`);
             }
         }
     }
@@ -20221,34 +19644,34 @@ function serializeBasicTypes(typeName, objectName, value) {
 }
 function serializeEnumType(objectName, allowedValues, value) {
     if (!allowedValues) {
-        throw new Error("Please provide a set of allowedValues to validate " + objectName + " as an Enum Type.");
+        throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);
     }
-    var isPresent = allowedValues.some(function (item) {
+    const isPresent = allowedValues.some((item) => {
         if (typeof item.valueOf() === "string") {
             return item.toLowerCase() === value.toLowerCase();
         }
         return item === value;
     });
     if (!isPresent) {
-        throw new Error(value + " is not a valid value for " + objectName + ". The valid values are: " + JSON.stringify(allowedValues) + ".");
+        throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);
     }
     return value;
 }
 function serializeByteArrayType(objectName, value) {
-    var returnValue = "";
+    let returnValue = "";
     if (value != undefined) {
         if (!(value instanceof Uint8Array)) {
-            throw new Error(objectName + " must be of type Uint8Array.");
+            throw new Error(`${objectName} must be of type Uint8Array.`);
         }
         returnValue = encodeByteArray(value);
     }
     return returnValue;
 }
 function serializeBase64UrlType(objectName, value) {
-    var returnValue = "";
+    let returnValue = "";
     if (value != undefined) {
         if (!(value instanceof Uint8Array)) {
-            throw new Error(objectName + " must be of type Uint8Array.");
+            throw new Error(`${objectName} must be of type Uint8Array.`);
         }
         returnValue = bufferToBase64Url(value) || "";
     }
@@ -20259,7 +19682,7 @@ function serializeDateTypes(typeName, value, objectName) {
         if (typeName.match(/^Date$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);
             }
             value =
                 value instanceof Date
@@ -20269,58 +19692,57 @@ function serializeDateTypes(typeName, value, objectName) {
         else if (typeName.match(/^DateTime$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in ISO8601 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);
             }
             value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();
         }
         else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123 format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);
             }
             value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();
         }
         else if (typeName.match(/^UnixTime$/i) !== null) {
             if (!(value instanceof Date ||
                 (typeof value.valueOf() === "string" && !isNaN(Date.parse(value))))) {
-                throw new Error(objectName + " must be an instanceof Date or a string in RFC-1123/ISO8601 format " +
-                    "for it to be serialized in UnixTime/Epoch format.");
+                throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +
+                    `for it to be serialized in UnixTime/Epoch format.`);
             }
             value = dateToUnixTime(value);
         }
         else if (typeName.match(/^TimeSpan$/i) !== null) {
             if (!isDuration(value)) {
-                throw new Error(objectName + " must be a string in ISO 8601 format. Instead was \"" + value + "\".");
+                throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`);
             }
         }
     }
     return value;
 }
 function serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {
-    var _a, _b;
     if (!Array.isArray(object)) {
-        throw new Error(objectName + " must be of type Array.");
+        throw new Error(`${objectName} must be of type Array.`);
     }
-    var elementType = mapper.type.element;
+    const elementType = mapper.type.element;
     if (!elementType || typeof elementType !== "object") {
-        throw new Error("element\" metadata for an Array must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName + "."));
+        throw new Error(`element" metadata for an Array must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}.`);
     }
-    var tempArray = [];
-    for (var i = 0; i < object.length; i++) {
-        var serializedValue = serializer.serialize(elementType, object[i], objectName, options);
+    const tempArray = [];
+    for (let i = 0; i < object.length; i++) {
+        const serializedValue = serializer.serialize(elementType, object[i], objectName, options);
         if (isXml && elementType.xmlNamespace) {
-            var xmlnsKey = elementType.xmlNamespacePrefix
-                ? "xmlns:" + elementType.xmlNamespacePrefix
+            const xmlnsKey = elementType.xmlNamespacePrefix
+                ? `xmlns:${elementType.xmlNamespacePrefix}`
                 : "xmlns";
             if (elementType.type.name === "Composite") {
-                tempArray[i] = tslib.__assign({}, serializedValue);
-                tempArray[i][XML_ATTRKEY] = (_a = {}, _a[xmlnsKey] = elementType.xmlNamespace, _a);
+                tempArray[i] = Object.assign({}, serializedValue);
+                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };
             }
             else {
                 tempArray[i] = {};
                 tempArray[i][options.xmlCharKey] = serializedValue;
-                tempArray[i][XML_ATTRKEY] = (_b = {}, _b[xmlnsKey] = elementType.xmlNamespace, _b);
+                tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };
             }
         }
         else {
@@ -20330,27 +19752,25 @@ function serializeSequenceType(serializer, mapper, object, objectName, isXml, op
     return tempArray;
 }
 function serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {
-    var _a;
     if (typeof object !== "object") {
-        throw new Error(objectName + " must be of type object.");
+        throw new Error(`${objectName} must be of type object.`);
     }
-    var valueType = mapper.type.value;
+    const valueType = mapper.type.value;
     if (!valueType || typeof valueType !== "object") {
-        throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName + "."));
+        throw new Error(`"value" metadata for a Dictionary must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}.`);
     }
-    var tempDictionary = {};
-    for (var _i = 0, _b = Object.keys(object); _i < _b.length; _i++) {
-        var key = _b[_i];
-        var serializedValue = serializer.serialize(valueType, object[key], objectName, options);
+    const tempDictionary = {};
+    for (const key of Object.keys(object)) {
+        const serializedValue = serializer.serialize(valueType, object[key], objectName, options);
         // If the element needs an XML namespace we need to add it within the $ property
         tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);
     }
     // Add the namespace to the root element if needed
     if (isXml && mapper.xmlNamespace) {
-        var xmlnsKey = mapper.xmlNamespacePrefix ? "xmlns:" + mapper.xmlNamespacePrefix : "xmlns";
-        var result = tempDictionary;
-        result[XML_ATTRKEY] = (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a);
+        const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : "xmlns";
+        const result = tempDictionary;
+        result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };
         return result;
     }
     return tempDictionary;
@@ -20362,9 +19782,9 @@ function serializeDictionaryType(serializer, mapper, object, objectName, isXml,
  * @param objectName - Name of the object being serialized
  */
 function resolveAdditionalProperties(serializer, mapper, objectName) {
-    var additionalProperties = mapper.type.additionalProperties;
+    const additionalProperties = mapper.type.additionalProperties;
     if (!additionalProperties && mapper.type.className) {
-        var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
+        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
         return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;
     }
     return additionalProperties;
@@ -20376,9 +19796,9 @@ function resolveAdditionalProperties(serializer, mapper, objectName) {
  * @param objectName - Name of the object being serialized
  */
 function resolveReferencedMapper(serializer, mapper, objectName) {
-    var className = mapper.type.className;
+    const className = mapper.type.className;
     if (!className) {
-        throw new Error("Class name for model \"" + objectName + "\" is not provided in the mapper \"" + JSON.stringify(mapper, undefined, 2) + "\".");
+        throw new Error(`Class name for model "${objectName}" is not provided in the mapper "${JSON.stringify(mapper, undefined, 2)}".`);
     }
     return serializer.modelMappers[className];
 }
@@ -20388,36 +19808,34 @@ function resolveReferencedMapper(serializer, mapper, objectName) {
  * @param mapper - The composite mapper to resolve
  */
 function resolveModelProperties(serializer, mapper, objectName) {
-    var modelProps = mapper.type.modelProperties;
+    let modelProps = mapper.type.modelProperties;
     if (!modelProps) {
-        var modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
+        const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);
         if (!modelMapper) {
-            throw new Error("mapper() cannot be null or undefined for model \"" + mapper.type.className + "\".");
+            throw new Error(`mapper() cannot be null or undefined for model "${mapper.type.className}".`);
         }
         modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;
         if (!modelProps) {
-            throw new Error("modelProperties cannot be null or undefined in the " +
-                ("mapper \"" + JSON.stringify(modelMapper) + "\" of type \"" + mapper.type.className + "\" for object \"" + objectName + "\"."));
+            throw new Error(`modelProperties cannot be null or undefined in the ` +
+                `mapper "${JSON.stringify(modelMapper)}" of type "${mapper.type.className}" for object "${objectName}".`);
         }
     }
     return modelProps;
 }
 function serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {
-    var _a, _b;
     if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
         mapper = getPolymorphicMapper(serializer, mapper, object, "clientName");
     }
     if (object != undefined) {
-        var payload = {};
-        var modelProps = resolveModelProperties(serializer, mapper, objectName);
-        for (var _i = 0, _c = Object.keys(modelProps); _i < _c.length; _i++) {
-            var key = _c[_i];
-            var propertyMapper = modelProps[key];
+        const payload = {};
+        const modelProps = resolveModelProperties(serializer, mapper, objectName);
+        for (const key of Object.keys(modelProps)) {
+            const propertyMapper = modelProps[key];
             if (propertyMapper.readOnly) {
                 continue;
             }
-            var propName = void 0;
-            var parentObject = payload;
+            let propName;
+            let parentObject = payload;
             if (serializer.isXML) {
                 if (propertyMapper.xmlIsWrapped) {
                     propName = propertyMapper.xmlName;
@@ -20427,11 +19845,10 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
                 }
             }
             else {
-                var paths = splitSerializeName(propertyMapper.serializedName);
+                const paths = splitSerializeName(propertyMapper.serializedName);
                 propName = paths.pop();
-                for (var _d = 0, paths_1 = paths; _d < paths_1.length; _d++) {
-                    var pathName = paths_1[_d];
-                    var childObject = parentObject[pathName];
+                for (const pathName of paths) {
+                    const childObject = parentObject[pathName];
                     if (childObject == undefined &&
                         (object[key] != undefined || propertyMapper.defaultValue !== undefined)) {
                         parentObject[pathName] = {};
@@ -20441,24 +19858,24 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
             }
             if (parentObject != undefined) {
                 if (isXml && mapper.xmlNamespace) {
-                    var xmlnsKey = mapper.xmlNamespacePrefix
-                        ? "xmlns:" + mapper.xmlNamespacePrefix
+                    const xmlnsKey = mapper.xmlNamespacePrefix
+                        ? `xmlns:${mapper.xmlNamespacePrefix}`
                         : "xmlns";
-                    parentObject[XML_ATTRKEY] = tslib.__assign(tslib.__assign({}, parentObject[XML_ATTRKEY]), (_a = {}, _a[xmlnsKey] = mapper.xmlNamespace, _a));
+                    parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace });
                 }
-                var propertyObjectName = propertyMapper.serializedName !== ""
+                const propertyObjectName = propertyMapper.serializedName !== ""
                     ? objectName + "." + propertyMapper.serializedName
                     : objectName;
-                var toSerialize = object[key];
-                var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
+                let toSerialize = object[key];
+                const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
                 if (polymorphicDiscriminator &&
                     polymorphicDiscriminator.clientName === key &&
                     toSerialize == undefined) {
                     toSerialize = mapper.serializedName;
                 }
-                var serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);
+                const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);
                 if (serializedValue !== undefined && propName != undefined) {
-                    var value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);
+                    const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);
                     if (isXml && propertyMapper.xmlIsAttribute) {
                         // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.
                         // This keeps things simple while preventing name collision
@@ -20467,7 +19884,7 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
                         parentObject[XML_ATTRKEY][propName] = serializedValue;
                     }
                     else if (isXml && propertyMapper.xmlIsWrapped) {
-                        parentObject[propName] = (_b = {}, _b[propertyMapper.xmlElementName] = value, _b);
+                        parentObject[propName] = { [propertyMapper.xmlElementName]: value };
                     }
                     else {
                         parentObject[propName] = value;
@@ -20475,17 +19892,14 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
                 }
             }
         }
-        var additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);
+        const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);
         if (additionalPropertiesMapper) {
-            var propNames = Object.keys(modelProps);
-            var _loop_1 = function (clientPropName) {
-                var isAdditionalProperty = propNames.every(function (pn) { return pn !== clientPropName; });
+            const propNames = Object.keys(modelProps);
+            for (const clientPropName in object) {
+                const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);
                 if (isAdditionalProperty) {
                     payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '["' + clientPropName + '"]', options);
                 }
-            };
-            for (var clientPropName in object) {
-                _loop_1(clientPropName);
             }
         }
         return payload;
@@ -20493,25 +19907,24 @@ function serializeCompositeType(serializer, mapper, object, objectName, isXml, o
     return object;
 }
 function getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {
-    var _a;
     if (!isXml || !propertyMapper.xmlNamespace) {
         return serializedValue;
     }
-    var xmlnsKey = propertyMapper.xmlNamespacePrefix
-        ? "xmlns:" + propertyMapper.xmlNamespacePrefix
+    const xmlnsKey = propertyMapper.xmlNamespacePrefix
+        ? `xmlns:${propertyMapper.xmlNamespacePrefix}`
         : "xmlns";
-    var xmlNamespace = (_a = {}, _a[xmlnsKey] = propertyMapper.xmlNamespace, _a);
+    const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };
     if (["Composite"].includes(propertyMapper.type.name)) {
         if (serializedValue[XML_ATTRKEY]) {
             return serializedValue;
         }
         else {
-            var result_1 = tslib.__assign({}, serializedValue);
-            result_1[XML_ATTRKEY] = xmlNamespace;
-            return result_1;
+            const result = Object.assign({}, serializedValue);
+            result[XML_ATTRKEY] = xmlNamespace;
+            return result;
         }
     }
-    var result = {};
+    const result = {};
     result[options.xmlCharKey] = serializedValue;
     result[XML_ATTRKEY] = xmlNamespace;
     return result;
@@ -20524,24 +19937,22 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
     if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {
         mapper = getPolymorphicMapper(serializer, mapper, responseBody, "serializedName");
     }
-    var modelProps = resolveModelProperties(serializer, mapper, objectName);
-    var instance = {};
-    var handledPropertyNames = [];
-    for (var _i = 0, _b = Object.keys(modelProps); _i < _b.length; _i++) {
-        var key = _b[_i];
-        var propertyMapper = modelProps[key];
-        var paths = splitSerializeName(modelProps[key].serializedName);
+    const modelProps = resolveModelProperties(serializer, mapper, objectName);
+    let instance = {};
+    const handledPropertyNames = [];
+    for (const key of Object.keys(modelProps)) {
+        const propertyMapper = modelProps[key];
+        const paths = splitSerializeName(modelProps[key].serializedName);
         handledPropertyNames.push(paths[0]);
-        var serializedName = propertyMapper.serializedName, xmlName = propertyMapper.xmlName, xmlElementName = propertyMapper.xmlElementName;
-        var propertyObjectName = objectName;
+        const { serializedName, xmlName, xmlElementName } = propertyMapper;
+        let propertyObjectName = objectName;
         if (serializedName !== "" && serializedName !== undefined) {
             propertyObjectName = objectName + "." + serializedName;
         }
-        var headerCollectionPrefix = propertyMapper.headerCollectionPrefix;
+        const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;
         if (headerCollectionPrefix) {
-            var dictionary = {};
-            for (var _c = 0, _d = Object.keys(responseBody); _c < _d.length; _c++) {
-                var headerKey = _d[_c];
+            const dictionary = {};
+            for (const headerKey of Object.keys(responseBody)) {
                 if (headerKey.startsWith(headerCollectionPrefix)) {
                     dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);
                 }
@@ -20554,7 +19965,7 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
                 instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);
             }
             else {
-                var propertyName = xmlElementName || xmlName || serializedName;
+                const propertyName = xmlElementName || xmlName || serializedName;
                 if (propertyMapper.xmlIsWrapped) {
                     /* a list of <xmlElementName> wrapped by <xmlName>
                       For the xml example below
@@ -20570,29 +19981,28 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
                         }
                       xmlName is "Cors" and xmlElementName is"CorsRule".
                     */
-                    var wrapped = responseBody[xmlName];
-                    var elementList = (_a = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _a !== void 0 ? _a : [];
+                    const wrapped = responseBody[xmlName];
+                    const elementList = (_a = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _a !== void 0 ? _a : [];
                     instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);
                 }
                 else {
-                    var property = responseBody[propertyName];
+                    const property = responseBody[propertyName];
                     instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);
                 }
             }
         }
         else {
             // deserialize the property if it is present in the provided responseBody instance
-            var propertyInstance = void 0;
-            var res = responseBody;
+            let propertyInstance;
+            let res = responseBody;
             // traversing the object step by step.
-            for (var _e = 0, paths_2 = paths; _e < paths_2.length; _e++) {
-                var item = paths_2[_e];
+            for (const item of paths) {
                 if (!res)
                     break;
                 res = res[item];
             }
             propertyInstance = res;
-            var polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;
+            const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;
             // checking that the model property name (key)(ex: "fishtype") and the
             // clientName of the polymorphicDiscriminator {metadata} (ex: "fishtype")
             // instead of the serializedName of the polymorphicDiscriminator (ex: "fish.type")
@@ -20607,15 +20017,14 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
                 propertyInstance == undefined) {
                 propertyInstance = mapper.serializedName;
             }
-            var serializedValue = void 0;
+            let serializedValue;
             // paging
             if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === "") {
                 propertyInstance = responseBody[key];
-                var arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
+                const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);
                 // Copy over any properties that have already been added into the instance, where they do
                 // not exist on the newly de-serialized array
-                for (var _f = 0, _g = Object.entries(instance); _f < _g.length; _f++) {
-                    var _h = _g[_f], k = _h[0], v = _h[1];
+                for (const [k, v] of Object.entries(instance)) {
                     if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {
                         arrayInstance[k] = v;
                     }
@@ -20628,26 +20037,25 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
             }
         }
     }
-    var additionalPropertiesMapper = mapper.type.additionalProperties;
+    const additionalPropertiesMapper = mapper.type.additionalProperties;
     if (additionalPropertiesMapper) {
-        var isAdditionalProperty = function (responsePropName) {
-            for (var clientPropName in modelProps) {
-                var paths = splitSerializeName(modelProps[clientPropName].serializedName);
+        const isAdditionalProperty = (responsePropName) => {
+            for (const clientPropName in modelProps) {
+                const paths = splitSerializeName(modelProps[clientPropName].serializedName);
                 if (paths[0] === responsePropName) {
                     return false;
                 }
             }
             return true;
         };
-        for (var responsePropName in responseBody) {
+        for (const responsePropName in responseBody) {
             if (isAdditionalProperty(responsePropName)) {
                 instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '["' + responsePropName + '"]', options);
             }
         }
     }
     else if (responseBody) {
-        for (var _j = 0, _k = Object.keys(responseBody); _j < _k.length; _j++) {
-            var key = _k[_j];
+        for (const key of Object.keys(responseBody)) {
             if (instance[key] === undefined &&
                 !handledPropertyNames.includes(key) &&
                 !isSpecialXmlProperty(key, options)) {
@@ -20658,15 +20066,14 @@ function deserializeCompositeType(serializer, mapper, responseBody, objectName,
     return instance;
 }
 function deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {
-    var value = mapper.type.value;
+    const value = mapper.type.value;
     if (!value || typeof value !== "object") {
-        throw new Error("\"value\" metadata for a Dictionary must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName));
+        throw new Error(`"value" metadata for a Dictionary must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}`);
     }
     if (responseBody) {
-        var tempDictionary = {};
-        for (var _i = 0, _a = Object.keys(responseBody); _i < _a.length; _i++) {
-            var key = _a[_i];
+        const tempDictionary = {};
+        for (const key of Object.keys(responseBody)) {
             tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);
         }
         return tempDictionary;
@@ -20674,36 +20081,36 @@ function deserializeDictionaryType(serializer, mapper, responseBody, objectName,
     return responseBody;
 }
 function deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {
-    var element = mapper.type.element;
+    const element = mapper.type.element;
     if (!element || typeof element !== "object") {
-        throw new Error("element\" metadata for an Array must be defined in the " +
-            ("mapper and it must of type \"object\" in " + objectName));
+        throw new Error(`element" metadata for an Array must be defined in the ` +
+            `mapper and it must of type "object" in ${objectName}`);
     }
     if (responseBody) {
         if (!Array.isArray(responseBody)) {
             // xml2js will interpret a single element array as just the element, so force it to be an array
             responseBody = [responseBody];
         }
-        var tempArray = [];
-        for (var i = 0; i < responseBody.length; i++) {
-            tempArray[i] = serializer.deserialize(element, responseBody[i], objectName + "[" + i + "]", options);
+        const tempArray = [];
+        for (let i = 0; i < responseBody.length; i++) {
+            tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);
         }
         return tempArray;
     }
     return responseBody;
 }
 function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {
-    var polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
+    const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
     if (polymorphicDiscriminator) {
-        var discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
+        const discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
         if (discriminatorName != undefined) {
-            var discriminatorValue = object[discriminatorName];
+            const discriminatorValue = object[discriminatorName];
             if (discriminatorValue != undefined) {
-                var typeName = mapper.type.uberParent || mapper.type.className;
-                var indexDiscriminator = discriminatorValue === typeName
+                const typeName = mapper.type.uberParent || mapper.type.className;
+                const indexDiscriminator = discriminatorValue === typeName
                     ? discriminatorValue
                     : typeName + "." + discriminatorValue;
-                var polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
+                const polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
                 if (polymorphicMapper) {
                     mapper = polymorphicMapper;
                 }
@@ -20724,7 +20131,7 @@ function getPolymorphicDiscriminatorSafely(serializer, typeName) {
 }
 // TODO: why is this here?
 function serializeObject(toSerialize) {
-    var castToSerialize = toSerialize;
+    const castToSerialize = toSerialize;
     if (toSerialize == undefined)
         return undefined;
     if (toSerialize instanceof Uint8Array) {
@@ -20735,15 +20142,15 @@ function serializeObject(toSerialize) {
         return toSerialize.toISOString();
     }
     else if (Array.isArray(toSerialize)) {
-        var array = [];
-        for (var i = 0; i < toSerialize.length; i++) {
+        const array = [];
+        for (let i = 0; i < toSerialize.length; i++) {
             array.push(serializeObject(toSerialize[i]));
         }
         return array;
     }
     else if (typeof toSerialize === "object") {
-        var dictionary = {};
-        for (var property in toSerialize) {
+        const dictionary = {};
+        for (const property in toSerialize) {
             dictionary[property] = serializeObject(castToSerialize[property]);
         }
         return dictionary;
@@ -20754,15 +20161,14 @@ function serializeObject(toSerialize) {
  * Utility function to create a K:V from a list of strings
  */
 function strEnum(o) {
-    var result = {};
-    for (var _i = 0, o_1 = o; _i < o_1.length; _i++) {
-        var key = o_1[_i];
+    const result = {};
+    for (const key of o) {
         result[key] = key;
     }
     return result;
 }
 // eslint-disable-next-line @typescript-eslint/no-redeclare
-var MapperType = strEnum([
+const MapperType = strEnum([
     "Base64Url",
     "Boolean",
     "ByteArray",
@@ -20784,7 +20190,7 @@ var MapperType = strEnum([
 // Copyright (c) Microsoft Corporation.
 function isWebResourceLike(object) {
     if (object && typeof object === "object") {
-        var castObject = object;
+        const castObject = object;
         if (typeof castObject.url === "string" &&
             typeof castObject.method === "string" &&
             typeof castObject.headers === "object" &&
@@ -20803,8 +20209,8 @@ function isWebResourceLike(object) {
  * This class provides an abstraction over a REST call by being library / implementation agnostic and wrapping the necessary
  * properties to initiate a request.
  */
-var WebResource = /** @class */ (function () {
-    function WebResource(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse, streamResponseStatusCodes) {
+class WebResource {
+    constructor(url, method, body, query, headers, streamResponseBody, withCredentials, abortSignal, timeout, onUploadProgress, onDownloadProgress, proxySettings, keepAlive, decompressResponse, streamResponseStatusCodes) {
         this.streamResponseBody = streamResponseBody;
         this.streamResponseStatusCodes = streamResponseStatusCodes;
         this.url = url || "";
@@ -20828,20 +20234,20 @@ var WebResource = /** @class */ (function () {
      * headers["accept-language"] are defined. It will throw an error if one of the above
      * mentioned properties are not defined.
      */
-    WebResource.prototype.validateRequestProperties = function () {
+    validateRequestProperties() {
         if (!this.method) {
             throw new Error("WebResource.method is required.");
         }
         if (!this.url) {
             throw new Error("WebResource.url is required.");
         }
-    };
+    }
     /**
      * Prepares the request.
      * @param options - Options to provide for preparing the request.
      * @returns Returns the prepared WebResource (HTTP Request) object that needs to be given to the request pipeline.
      */
-    WebResource.prototype.prepare = function (options) {
+    prepare(options) {
         if (!options) {
             throw new Error("options object is required");
         }
@@ -20870,7 +20276,7 @@ var WebResource = /** @class */ (function () {
         }
         // set the method
         if (options.method) {
-            var validMethods = ["GET", "PUT", "HEAD", "DELETE", "OPTIONS", "POST", "PATCH", "TRACE"];
+            const validMethods = ["GET", "PUT", "HEAD", "DELETE", "OPTIONS", "POST", "PATCH", "TRACE"];
             if (validMethods.indexOf(options.method.toUpperCase()) === -1) {
                 throw new Error('The provided method "' +
                     options.method +
@@ -20881,70 +20287,70 @@ var WebResource = /** @class */ (function () {
         this.method = options.method.toUpperCase();
         // construct the url if path template is provided
         if (options.pathTemplate) {
-            var pathTemplate_1 = options.pathTemplate, pathParameters_1 = options.pathParameters;
-            if (typeof pathTemplate_1 !== "string") {
+            const { pathTemplate, pathParameters } = options;
+            if (typeof pathTemplate !== "string") {
                 throw new Error('options.pathTemplate must be of type "string".');
             }
             if (!options.baseUrl) {
                 options.baseUrl = "https://management.azure.com";
             }
-            var baseUrl = options.baseUrl;
-            var url_1 = baseUrl +
+            const baseUrl = options.baseUrl;
+            let url = baseUrl +
                 (baseUrl.endsWith("/") ? "" : "/") +
-                (pathTemplate_1.startsWith("/") ? pathTemplate_1.slice(1) : pathTemplate_1);
-            var segments = url_1.match(/({[\w-]*\s*[\w-]*})/gi);
+                (pathTemplate.startsWith("/") ? pathTemplate.slice(1) : pathTemplate);
+            const segments = url.match(/({[\w-]*\s*[\w-]*})/gi);
             if (segments && segments.length) {
-                if (!pathParameters_1) {
-                    throw new Error("pathTemplate: " + pathTemplate_1 + " has been provided. Hence, options.pathParameters must also be provided.");
+                if (!pathParameters) {
+                    throw new Error(`pathTemplate: ${pathTemplate} has been provided. Hence, options.pathParameters must also be provided.`);
                 }
                 segments.forEach(function (item) {
-                    var pathParamName = item.slice(1, -1);
-                    var pathParam = pathParameters_1[pathParamName];
+                    const pathParamName = item.slice(1, -1);
+                    const pathParam = pathParameters[pathParamName];
                     if (pathParam === null ||
                         pathParam === undefined ||
                         !(typeof pathParam === "string" || typeof pathParam === "object")) {
-                        var stringifiedPathParameters = JSON.stringify(pathParameters_1, undefined, 2);
-                        throw new Error("pathTemplate: " + pathTemplate_1 + " contains the path parameter " + pathParamName +
-                            (" however, it is not present in parameters: " + stringifiedPathParameters + ".") +
-                            ("The value of the path parameter can either be a \"string\" of the form { " + pathParamName + ": \"some sample value\" } or ") +
-                            ("it can be an \"object\" of the form { \"" + pathParamName + "\": { value: \"some sample value\", skipUrlEncoding: true } }."));
+                        const stringifiedPathParameters = JSON.stringify(pathParameters, undefined, 2);
+                        throw new Error(`pathTemplate: ${pathTemplate} contains the path parameter ${pathParamName}` +
+                            ` however, it is not present in parameters: ${stringifiedPathParameters}.` +
+                            `The value of the path parameter can either be a "string" of the form { ${pathParamName}: "some sample value" } or ` +
+                            `it can be an "object" of the form { "${pathParamName}": { value: "some sample value", skipUrlEncoding: true } }.`);
                     }
                     if (typeof pathParam.valueOf() === "string") {
-                        url_1 = url_1.replace(item, encodeURIComponent(pathParam));
+                        url = url.replace(item, encodeURIComponent(pathParam));
                     }
                     if (typeof pathParam.valueOf() === "object") {
                         if (!pathParam.value) {
-                            throw new Error("options.pathParameters[" + pathParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
+                            throw new Error(`options.pathParameters[${pathParamName}] is of type "object" but it does not contain a "value" property.`);
                         }
                         if (pathParam.skipUrlEncoding) {
-                            url_1 = url_1.replace(item, pathParam.value);
+                            url = url.replace(item, pathParam.value);
                         }
                         else {
-                            url_1 = url_1.replace(item, encodeURIComponent(pathParam.value));
+                            url = url.replace(item, encodeURIComponent(pathParam.value));
                         }
                     }
                 });
             }
-            this.url = url_1;
+            this.url = url;
         }
         // append query parameters to the url if they are provided. They can be provided with pathTemplate or url option.
         if (options.queryParameters) {
-            var queryParameters = options.queryParameters;
+            const queryParameters = options.queryParameters;
             if (typeof queryParameters !== "object") {
-                throw new Error("options.queryParameters must be of type object. It should be a JSON object " +
-                    "of \"query-parameter-name\" as the key and the \"query-parameter-value\" as the value. " +
-                    "The \"query-parameter-value\" may be fo type \"string\" or an \"object\" of the form { value: \"query-parameter-value\", skipUrlEncoding: true }.");
+                throw new Error(`options.queryParameters must be of type object. It should be a JSON object ` +
+                    `of "query-parameter-name" as the key and the "query-parameter-value" as the value. ` +
+                    `The "query-parameter-value" may be fo type "string" or an "object" of the form { value: "query-parameter-value", skipUrlEncoding: true }.`);
             }
             // append question mark if it is not present in the url
             if (this.url && this.url.indexOf("?") === -1) {
                 this.url += "?";
             }
             // construct queryString
-            var queryParams = [];
+            const queryParams = [];
             // We need to populate this.query as a dictionary if the request is being used for Sway's validateRequest().
             this.query = {};
-            for (var queryParamName in queryParameters) {
-                var queryParam = queryParameters[queryParamName];
+            for (const queryParamName in queryParameters) {
+                const queryParam = queryParameters[queryParamName];
                 if (queryParam) {
                     if (typeof queryParam === "string") {
                         queryParams.push(queryParamName + "=" + encodeURIComponent(queryParam));
@@ -20952,7 +20358,7 @@ var WebResource = /** @class */ (function () {
                     }
                     else if (typeof queryParam === "object") {
                         if (!queryParam.value) {
-                            throw new Error("options.queryParameters[" + queryParamName + "] is of type \"object\" but it does not contain a \"value\" property.");
+                            throw new Error(`options.queryParameters[${queryParamName}] is of type "object" but it does not contain a "value" property.`);
                         }
                         if (queryParam.skipUrlEncoding) {
                             queryParams.push(queryParamName + "=" + queryParam.value);
@@ -20970,9 +20376,8 @@ var WebResource = /** @class */ (function () {
         }
         // add headers to the request if they are provided
         if (options.headers) {
-            var headers = options.headers;
-            for (var _i = 0, _a = Object.keys(options.headers); _i < _a.length; _i++) {
-                var headerName = _a[_i];
+            const headers = options.headers;
+            for (const headerName of Object.keys(options.headers)) {
                 this.headers.set(headerName, headers[headerName]);
             }
         }
@@ -21019,13 +20424,13 @@ var WebResource = /** @class */ (function () {
         this.onDownloadProgress = options.onDownloadProgress;
         this.onUploadProgress = options.onUploadProgress;
         return this;
-    };
+    }
     /**
      * Clone this WebResource HTTP request object.
      * @returns The clone of this WebResource HTTP request object.
      */
-    WebResource.prototype.clone = function () {
-        var result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse, this.streamResponseStatusCodes);
+    clone() {
+        const result = new WebResource(this.url, this.method, this.body, this.query, this.headers && this.headers.clone(), this.streamResponseBody, this.withCredentials, this.abortSignal, this.timeout, this.onUploadProgress, this.onDownloadProgress, this.proxySettings, this.keepAlive, this.decompressResponse, this.streamResponseStatusCodes);
         if (this.formData) {
             result.formData = this.formData;
         }
@@ -21039,43 +20444,42 @@ var WebResource = /** @class */ (function () {
             result.operationResponseGetter = this.operationResponseGetter;
         }
         return result;
-    };
-    return WebResource;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var custom = util.inspect.custom;
+const custom = util.inspect.custom;
 
 // Copyright (c) Microsoft Corporation.
 /**
  * A class that handles the query portion of a URLBuilder.
  */
-var URLQuery = /** @class */ (function () {
-    function URLQuery() {
+class URLQuery {
+    constructor() {
         this._rawQuery = {};
     }
     /**
      * Get whether or not there any query parameters in this URLQuery.
      */
-    URLQuery.prototype.any = function () {
+    any() {
         return Object.keys(this._rawQuery).length > 0;
-    };
+    }
     /**
      * Get the keys of the query string.
      */
-    URLQuery.prototype.keys = function () {
+    keys() {
         return Object.keys(this._rawQuery);
-    };
+    }
     /**
      * Set a query parameter with the provided name and value. If the parameterValue is undefined or
      * empty, then this will attempt to remove an existing query parameter with the provided
      * parameterName.
      */
-    URLQuery.prototype.set = function (parameterName, parameterValue) {
-        var caseParameterValue = parameterValue;
+    set(parameterName, parameterValue) {
+        const caseParameterValue = parameterValue;
         if (parameterName) {
             if (caseParameterValue !== undefined && caseParameterValue !== null) {
-                var newValue = Array.isArray(caseParameterValue)
+                const newValue = Array.isArray(caseParameterValue)
                     ? caseParameterValue
                     : caseParameterValue.toString();
                 this._rawQuery[parameterName] = newValue;
@@ -21084,52 +20488,51 @@ var URLQuery = /** @class */ (function () {
                 delete this._rawQuery[parameterName];
             }
         }
-    };
+    }
     /**
      * Get the value of the query parameter with the provided name. If no parameter exists with the
      * provided parameter name, then undefined will be returned.
      */
-    URLQuery.prototype.get = function (parameterName) {
+    get(parameterName) {
         return parameterName ? this._rawQuery[parameterName] : undefined;
-    };
+    }
     /**
      * Get the string representation of this query. The return value will not start with a "?".
      */
-    URLQuery.prototype.toString = function () {
-        var result = "";
-        for (var parameterName in this._rawQuery) {
+    toString() {
+        let result = "";
+        for (const parameterName in this._rawQuery) {
             if (result) {
                 result += "&";
             }
-            var parameterValue = this._rawQuery[parameterName];
+            const parameterValue = this._rawQuery[parameterName];
             if (Array.isArray(parameterValue)) {
-                var parameterStrings = [];
-                for (var _i = 0, parameterValue_1 = parameterValue; _i < parameterValue_1.length; _i++) {
-                    var parameterValueElement = parameterValue_1[_i];
-                    parameterStrings.push(parameterName + "=" + parameterValueElement);
+                const parameterStrings = [];
+                for (const parameterValueElement of parameterValue) {
+                    parameterStrings.push(`${parameterName}=${parameterValueElement}`);
                 }
                 result += parameterStrings.join("&");
             }
             else {
-                result += parameterName + "=" + parameterValue;
+                result += `${parameterName}=${parameterValue}`;
             }
         }
         return result;
-    };
+    }
     /**
      * Parse a URLQuery from the provided text.
      */
-    URLQuery.parse = function (text) {
-        var result = new URLQuery();
+    static parse(text) {
+        const result = new URLQuery();
         if (text) {
             if (text.startsWith("?")) {
                 text = text.substring(1);
             }
-            var currentState = "ParameterName";
-            var parameterName = "";
-            var parameterValue = "";
-            for (var i = 0; i < text.length; ++i) {
-                var currentCharacter = text[i];
+            let currentState = "ParameterName";
+            let parameterName = "";
+            let parameterValue = "";
+            for (let i = 0; i < text.length; ++i) {
+                const currentCharacter = text[i];
                 switch (currentState) {
                     case "ParameterName":
                         switch (currentCharacter) {
@@ -21167,81 +20570,78 @@ var URLQuery = /** @class */ (function () {
             }
         }
         return result;
-    };
-    return URLQuery;
-}());
+    }
+}
 /**
  * A class that handles creating, modifying, and parsing URLs.
  */
-var URLBuilder = /** @class */ (function () {
-    function URLBuilder() {
-    }
+class URLBuilder {
     /**
      * Set the scheme/protocol for this URL. If the provided scheme contains other parts of a URL
      * (such as a host, port, path, or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setScheme = function (scheme) {
+    setScheme(scheme) {
         if (!scheme) {
             this._scheme = undefined;
         }
         else {
             this.set(scheme, "SCHEME");
         }
-    };
+    }
     /**
      * Get the scheme that has been set in this URL.
      */
-    URLBuilder.prototype.getScheme = function () {
+    getScheme() {
         return this._scheme;
-    };
+    }
     /**
      * Set the host for this URL. If the provided host contains other parts of a URL (such as a
      * port, path, or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setHost = function (host) {
+    setHost(host) {
         if (!host) {
             this._host = undefined;
         }
         else {
             this.set(host, "SCHEME_OR_HOST");
         }
-    };
+    }
     /**
      * Get the host that has been set in this URL.
      */
-    URLBuilder.prototype.getHost = function () {
+    getHost() {
         return this._host;
-    };
+    }
     /**
      * Set the port for this URL. If the provided port contains other parts of a URL (such as a
      * path or query), those parts will be added to this URL as well.
      */
-    URLBuilder.prototype.setPort = function (port) {
+    setPort(port) {
         if (port === undefined || port === null || port === "") {
             this._port = undefined;
         }
         else {
             this.set(port.toString(), "PORT");
         }
-    };
+    }
     /**
      * Get the port that has been set in this URL.
      */
-    URLBuilder.prototype.getPort = function () {
+    getPort() {
         return this._port;
-    };
+    }
     /**
      * Set the path for this URL. If the provided path contains a query, then it will be added to
      * this URL as well.
      */
-    URLBuilder.prototype.setPath = function (path) {
+    setPath(path) {
         if (!path) {
             this._path = undefined;
         }
         else {
-            var schemeIndex = path.indexOf("://");
+            const schemeIndex = path.indexOf("://");
             if (schemeIndex !== -1) {
-                var schemeStart = path.lastIndexOf("/", schemeIndex);
+                const schemeStart = path.lastIndexOf("/", schemeIndex);
                 // Make sure to only grab the URL part of the path before setting the state back to SCHEME
                 // this will handle cases such as "/a/b/c/https://microsoft.com" => "https://microsoft.com"
                 this.set(schemeStart === -1 ? path : path.substr(schemeStart + 1), "SCHEME");
@@ -21250,14 +20650,14 @@ var URLBuilder = /** @class */ (function () {
                 this.set(path, "PATH");
             }
         }
-    };
+    }
     /**
      * Append the provided path to this URL's existing path. If the provided path contains a query,
      * then it will be added to this URL as well.
      */
-    URLBuilder.prototype.appendPath = function (path) {
+    appendPath(path) {
         if (path) {
-            var currentPath = this.getPath();
+            let currentPath = this.getPath();
             if (currentPath) {
                 if (!currentPath.endsWith("/")) {
                     currentPath += "/";
@@ -21269,58 +20669,58 @@ var URLBuilder = /** @class */ (function () {
             }
             this.set(path, "PATH");
         }
-    };
+    }
     /**
      * Get the path that has been set in this URL.
      */
-    URLBuilder.prototype.getPath = function () {
+    getPath() {
         return this._path;
-    };
+    }
     /**
      * Set the query in this URL.
      */
-    URLBuilder.prototype.setQuery = function (query) {
+    setQuery(query) {
         if (!query) {
             this._query = undefined;
         }
         else {
             this._query = URLQuery.parse(query);
         }
-    };
+    }
     /**
      * Set a query parameter with the provided name and value in this URL's query. If the provided
      * query parameter value is undefined or empty, then the query parameter will be removed if it
      * existed.
      */
-    URLBuilder.prototype.setQueryParameter = function (queryParameterName, queryParameterValue) {
+    setQueryParameter(queryParameterName, queryParameterValue) {
         if (queryParameterName) {
             if (!this._query) {
                 this._query = new URLQuery();
             }
             this._query.set(queryParameterName, queryParameterValue);
         }
-    };
+    }
     /**
      * Get the value of the query parameter with the provided query parameter name. If no query
      * parameter exists with the provided name, then undefined will be returned.
      */
-    URLBuilder.prototype.getQueryParameterValue = function (queryParameterName) {
+    getQueryParameterValue(queryParameterName) {
         return this._query ? this._query.get(queryParameterName) : undefined;
-    };
+    }
     /**
      * Get the query in this URL.
      */
-    URLBuilder.prototype.getQuery = function () {
+    getQuery() {
         return this._query ? this._query.toString() : undefined;
-    };
+    }
     /**
      * Set the parts of this URL by parsing the provided text using the provided startState.
      */
-    URLBuilder.prototype.set = function (text, startState) {
-        var tokenizer = new URLTokenizer(text, startState);
+    set(text, startState) {
+        const tokenizer = new URLTokenizer(text, startState);
         while (tokenizer.next()) {
-            var token = tokenizer.current();
-            var tokenPath = void 0;
+            const token = tokenizer.current();
+            let tokenPath;
             if (token) {
                 switch (token.type) {
                     case "SCHEME":
@@ -21342,21 +20742,21 @@ var URLBuilder = /** @class */ (function () {
                         this._query = URLQuery.parse(token.text);
                         break;
                     default:
-                        throw new Error("Unrecognized URLTokenType: " + token.type);
+                        throw new Error(`Unrecognized URLTokenType: ${token.type}`);
                 }
             }
         }
-    };
-    URLBuilder.prototype.toString = function () {
-        var result = "";
+    }
+    toString() {
+        let result = "";
         if (this._scheme) {
-            result += this._scheme + "://";
+            result += `${this._scheme}://`;
         }
         if (this._host) {
             result += this._host;
         }
         if (this._port) {
-            result += ":" + this._port;
+            result += `:${this._port}`;
         }
         if (this._path) {
             if (!this._path.startsWith("/")) {
@@ -21365,15 +20765,15 @@ var URLBuilder = /** @class */ (function () {
             result += this._path;
         }
         if (this._query && this._query.any()) {
-            result += "?" + this._query.toString();
+            result += `?${this._query.toString()}`;
         }
         return result;
-    };
+    }
     /**
      * If the provided searchValue is found in this URLBuilder, then replace it with the provided
      * replaceValue.
      */
-    URLBuilder.prototype.replaceAll = function (searchValue, replaceValue) {
+    replaceAll(searchValue, replaceValue) {
         if (searchValue) {
             this.setScheme(replaceAll(this.getScheme(), searchValue, replaceValue));
             this.setHost(replaceAll(this.getHost(), searchValue, replaceValue));
@@ -21381,42 +20781,40 @@ var URLBuilder = /** @class */ (function () {
             this.setPath(replaceAll(this.getPath(), searchValue, replaceValue));
             this.setQuery(replaceAll(this.getQuery(), searchValue, replaceValue));
         }
-    };
-    URLBuilder.parse = function (text) {
-        var result = new URLBuilder();
+    }
+    static parse(text) {
+        const result = new URLBuilder();
         result.set(text, "SCHEME_OR_HOST");
         return result;
-    };
-    return URLBuilder;
-}());
-var URLToken = /** @class */ (function () {
-    function URLToken(text, type) {
+    }
+}
+class URLToken {
+    constructor(text, type) {
         this.text = text;
         this.type = type;
     }
-    URLToken.scheme = function (text) {
+    static scheme(text) {
         return new URLToken(text, "SCHEME");
-    };
-    URLToken.host = function (text) {
+    }
+    static host(text) {
         return new URLToken(text, "HOST");
-    };
-    URLToken.port = function (text) {
+    }
+    static port(text) {
         return new URLToken(text, "PORT");
-    };
-    URLToken.path = function (text) {
+    }
+    static path(text) {
         return new URLToken(text, "PATH");
-    };
-    URLToken.query = function (text) {
+    }
+    static query(text) {
         return new URLToken(text, "QUERY");
-    };
-    return URLToken;
-}());
+    }
+}
 /**
  * Get whether or not the provided character (single character string) is an alphanumeric (letter or
  * digit) character.
  */
 function isAlphaNumericCharacter(character) {
-    var characterCode = character.charCodeAt(0);
+    const characterCode = character.charCodeAt(0);
     return ((48 /* '0' */ <= characterCode && characterCode <= 57) /* '9' */ ||
         (65 /* 'A' */ <= characterCode && characterCode <= 90) /* 'Z' */ ||
         (97 /* 'a' */ <= characterCode && characterCode <= 122) /* 'z' */);
@@ -21424,8 +20822,8 @@ function isAlphaNumericCharacter(character) {
 /**
  * A class that tokenizes URL strings.
  */
-var URLTokenizer = /** @class */ (function () {
-    function URLTokenizer(_text, state) {
+class URLTokenizer {
+    constructor(_text, state) {
         this._text = _text;
         this._textLength = _text ? _text.length : 0;
         this._currentState = state !== undefined && state !== null ? state : "SCHEME_OR_HOST";
@@ -21435,13 +20833,13 @@ var URLTokenizer = /** @class */ (function () {
      * Get the current URLToken this URLTokenizer is pointing at, or undefined if the URLTokenizer
      * hasn't started or has finished tokenizing.
      */
-    URLTokenizer.prototype.current = function () {
+    current() {
         return this._currentToken;
-    };
+    }
     /**
      * Advance to the next URLToken and return whether or not a URLToken was found.
      */
-    URLTokenizer.prototype.next = function () {
+    next() {
         if (!hasCurrentCharacter(this)) {
             this._currentToken = undefined;
         }
@@ -21466,18 +20864,17 @@ var URLTokenizer = /** @class */ (function () {
                     nextQuery(this);
                     break;
                 default:
-                    throw new Error("Unrecognized URLTokenizerState: " + this._currentState);
+                    throw new Error(`Unrecognized URLTokenizerState: ${this._currentState}`);
             }
         }
         return !!this._currentToken;
-    };
-    return URLTokenizer;
-}());
+    }
+}
 /**
  * Read the remaining characters from this Tokenizer's character stream.
  */
 function readRemaining(tokenizer) {
-    var result = "";
+    let result = "";
     if (tokenizer._currentIndex < tokenizer._textLength) {
         result = tokenizer._text.substring(tokenizer._currentIndex);
         tokenizer._currentIndex = tokenizer._textLength;
@@ -21513,7 +20910,7 @@ function nextCharacter(tokenizer, step) {
  * Tokenizer's stream of characters.
  */
 function peekCharacters(tokenizer, charactersToPeek) {
-    var endIndex = tokenizer._currentIndex + charactersToPeek;
+    let endIndex = tokenizer._currentIndex + charactersToPeek;
     if (tokenizer._textLength < endIndex) {
         endIndex = tokenizer._textLength;
     }
@@ -21524,9 +20921,9 @@ function peekCharacters(tokenizer, charactersToPeek) {
  * is false when provided the current character.
  */
 function readWhile(tokenizer, condition) {
-    var result = "";
+    let result = "";
     while (hasCurrentCharacter(tokenizer)) {
-        var currentCharacter = getCurrentCharacter(tokenizer);
+        const currentCharacter = getCurrentCharacter(tokenizer);
         if (!condition(currentCharacter)) {
             break;
         }
@@ -21542,21 +20939,17 @@ function readWhile(tokenizer, condition) {
  * character stream is reached.
  */
 function readWhileLetterOrDigit(tokenizer) {
-    return readWhile(tokenizer, function (character) { return isAlphaNumericCharacter(character); });
+    return readWhile(tokenizer, (character) => isAlphaNumericCharacter(character));
 }
 /**
  * Read characters from this Tokenizer until one of the provided terminating characters is read or
  * the end of the character stream is reached.
  */
-function readUntilCharacter(tokenizer) {
-    var terminatingCharacters = [];
-    for (var _i = 1; _i < arguments.length; _i++) {
-        terminatingCharacters[_i - 1] = arguments[_i];
-    }
-    return readWhile(tokenizer, function (character) { return terminatingCharacters.indexOf(character) === -1; });
+function readUntilCharacter(tokenizer, ...terminatingCharacters) {
+    return readWhile(tokenizer, (character) => terminatingCharacters.indexOf(character) === -1);
 }
 function nextScheme(tokenizer) {
-    var scheme = readWhileLetterOrDigit(tokenizer);
+    const scheme = readWhileLetterOrDigit(tokenizer);
     tokenizer._currentToken = URLToken.scheme(scheme);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -21566,7 +20959,7 @@ function nextScheme(tokenizer) {
     }
 }
 function nextSchemeOrHost(tokenizer) {
-    var schemeOrHost = readUntilCharacter(tokenizer, ":", "/", "?");
+    const schemeOrHost = readUntilCharacter(tokenizer, ":", "/", "?");
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentToken = URLToken.host(schemeOrHost);
         tokenizer._currentState = "DONE";
@@ -21595,7 +20988,7 @@ function nextHost(tokenizer) {
     if (peekCharacters(tokenizer, 3) === "://") {
         nextCharacter(tokenizer, 3);
     }
-    var host = readUntilCharacter(tokenizer, ":", "/", "?");
+    const host = readUntilCharacter(tokenizer, ":", "/", "?");
     tokenizer._currentToken = URLToken.host(host);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -21614,7 +21007,7 @@ function nextPort(tokenizer) {
     if (getCurrentCharacter(tokenizer) === ":") {
         nextCharacter(tokenizer);
     }
-    var port = readUntilCharacter(tokenizer, "/", "?");
+    const port = readUntilCharacter(tokenizer, "/", "?");
     tokenizer._currentToken = URLToken.port(port);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -21627,7 +21020,7 @@ function nextPort(tokenizer) {
     }
 }
 function nextPath(tokenizer) {
-    var path = readUntilCharacter(tokenizer, "?");
+    const path = readUntilCharacter(tokenizer, "?");
     tokenizer._currentToken = URLToken.path(path);
     if (!hasCurrentCharacter(tokenizer)) {
         tokenizer._currentState = "DONE";
@@ -21640,14 +21033,14 @@ function nextQuery(tokenizer) {
     if (getCurrentCharacter(tokenizer) === "?") {
         nextCharacter(tokenizer);
     }
-    var query = readRemaining(tokenizer);
+    const query = readRemaining(tokenizer);
     tokenizer._currentToken = URLToken.query(query);
     tokenizer._currentState = "DONE";
 }
 
 // Copyright (c) Microsoft Corporation.
-var RedactedString = "REDACTED";
-var defaultAllowedHeaderNames = [
+const RedactedString = "REDACTED";
+const defaultAllowedHeaderNames = [
     "x-ms-client-request-id",
     "x-ms-return-client-request-id",
     "x-ms-useragent",
@@ -21687,35 +21080,33 @@ var defaultAllowedHeaderNames = [
     "Transfer-Encoding",
     "User-Agent"
 ];
-var defaultAllowedQueryParameters = ["api-version"];
-var Sanitizer = /** @class */ (function () {
-    function Sanitizer(_a) {
-        var _b = _a === void 0 ? {} : _a, _c = _b.allowedHeaderNames, allowedHeaderNames = _c === void 0 ? [] : _c, _d = _b.allowedQueryParameters, allowedQueryParameters = _d === void 0 ? [] : _d;
+const defaultAllowedQueryParameters = ["api-version"];
+class Sanitizer {
+    constructor({ allowedHeaderNames = [], allowedQueryParameters = [] } = {}) {
         allowedHeaderNames = Array.isArray(allowedHeaderNames)
             ? defaultAllowedHeaderNames.concat(allowedHeaderNames)
             : defaultAllowedHeaderNames;
         allowedQueryParameters = Array.isArray(allowedQueryParameters)
             ? defaultAllowedQueryParameters.concat(allowedQueryParameters)
             : defaultAllowedQueryParameters;
-        this.allowedHeaderNames = new Set(allowedHeaderNames.map(function (n) { return n.toLowerCase(); }));
-        this.allowedQueryParameters = new Set(allowedQueryParameters.map(function (p) { return p.toLowerCase(); }));
+        this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));
+        this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));
     }
-    Sanitizer.prototype.sanitize = function (obj) {
-        var _this = this;
-        var seen = new Set();
-        return JSON.stringify(obj, function (key, value) {
+    sanitize(obj) {
+        const seen = new Set();
+        return JSON.stringify(obj, (key, value) => {
             // Ensure Errors include their interesting non-enumerable members
             if (value instanceof Error) {
-                return tslib.__assign(tslib.__assign({}, value), { name: value.name, message: value.message });
+                return Object.assign(Object.assign({}, value), { name: value.name, message: value.message });
             }
             if (key === "_headersMap") {
-                return _this.sanitizeHeaders(value);
+                return this.sanitizeHeaders(value);
             }
             else if (key === "url") {
-                return _this.sanitizeUrl(value);
+                return this.sanitizeUrl(value);
             }
             else if (key === "query") {
-                return _this.sanitizeQuery(value);
+                return this.sanitizeQuery(value);
             }
             else if (key === "body") {
                 // Don't log the request body
@@ -21738,20 +21129,19 @@ var Sanitizer = /** @class */ (function () {
             }
             return value;
         }, 2);
-    };
-    Sanitizer.prototype.sanitizeHeaders = function (value) {
-        return this.sanitizeObject(value, this.allowedHeaderNames, function (v, k) { return v[k].value; });
-    };
-    Sanitizer.prototype.sanitizeQuery = function (value) {
-        return this.sanitizeObject(value, this.allowedQueryParameters, function (v, k) { return v[k]; });
-    };
-    Sanitizer.prototype.sanitizeObject = function (value, allowedKeys, accessor) {
+    }
+    sanitizeHeaders(value) {
+        return this.sanitizeObject(value, this.allowedHeaderNames, (v, k) => v[k].value);
+    }
+    sanitizeQuery(value) {
+        return this.sanitizeObject(value, this.allowedQueryParameters, (v, k) => v[k]);
+    }
+    sanitizeObject(value, allowedKeys, accessor) {
         if (typeof value !== "object" || value === null) {
             return value;
         }
-        var sanitized = {};
-        for (var _i = 0, _a = Object.keys(value); _i < _a.length; _i++) {
-            var k = _a[_i];
+        const sanitized = {};
+        for (const k of Object.keys(value)) {
             if (allowedKeys.has(k.toLowerCase())) {
                 sanitized[k] = accessor(value, k);
             }
@@ -21760,267 +21150,230 @@ var Sanitizer = /** @class */ (function () {
             }
         }
         return sanitized;
-    };
-    Sanitizer.prototype.sanitizeUrl = function (value) {
+    }
+    sanitizeUrl(value) {
         if (typeof value !== "string" || value === null) {
             return value;
         }
-        var urlBuilder = URLBuilder.parse(value);
-        var queryString = urlBuilder.getQuery();
+        const urlBuilder = URLBuilder.parse(value);
+        const queryString = urlBuilder.getQuery();
         if (!queryString) {
             return value;
         }
-        var query = URLQuery.parse(queryString);
-        for (var _i = 0, _a = query.keys(); _i < _a.length; _i++) {
-            var k = _a[_i];
+        const query = URLQuery.parse(queryString);
+        for (const k of query.keys()) {
             if (!this.allowedQueryParameters.has(k.toLowerCase())) {
                 query.set(k, RedactedString);
             }
         }
         urlBuilder.setQuery(query.toString());
         return urlBuilder.toString();
-    };
-    return Sanitizer;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var errorSanitizer = new Sanitizer();
-var RestError = /** @class */ (function (_super) {
-    tslib.__extends(RestError, _super);
-    function RestError(message, code, statusCode, request, response) {
-        var _this = _super.call(this, message) || this;
-        _this.name = "RestError";
-        _this.code = code;
-        _this.statusCode = statusCode;
-        _this.request = request;
-        _this.response = response;
-        Object.setPrototypeOf(_this, RestError.prototype);
-        return _this;
+const errorSanitizer = new Sanitizer();
+class RestError extends Error {
+    constructor(message, code, statusCode, request, response) {
+        super(message);
+        this.name = "RestError";
+        this.code = code;
+        this.statusCode = statusCode;
+        this.request = request;
+        this.response = response;
+        Object.setPrototypeOf(this, RestError.prototype);
     }
     /**
      * Logging method for util.inspect in Node
      */
-    RestError.prototype[custom] = function () {
-        return "RestError: " + this.message + " \n " + errorSanitizer.sanitize(this);
-    };
-    RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR";
-    RestError.PARSE_ERROR = "PARSE_ERROR";
-    return RestError;
-}(Error));
-
-// Copyright (c) Microsoft Corporation.
-var logger = logger$1.createClientLogger("core-http");
-
-// Copyright (c) Microsoft Corporation.
-var ReportTransform = /** @class */ (function (_super) {
-    tslib.__extends(ReportTransform, _super);
-    function ReportTransform(progressCallback) {
-        var _this = _super.call(this) || this;
-        _this.progressCallback = progressCallback;
-        _this.loadedBytes = 0;
-        return _this;
+    [custom]() {
+        return `RestError: ${this.message} \n ${errorSanitizer.sanitize(this)}`;
     }
-    ReportTransform.prototype._transform = function (chunk, _encoding, callback) {
+}
+RestError.REQUEST_SEND_ERROR = "REQUEST_SEND_ERROR";
+RestError.PARSE_ERROR = "PARSE_ERROR";
+
+// Copyright (c) Microsoft Corporation.
+const logger = logger$1.createClientLogger("core-http");
+
+// Copyright (c) Microsoft Corporation.
+class ReportTransform extends stream.Transform {
+    constructor(progressCallback) {
+        super();
+        this.progressCallback = progressCallback;
+        this.loadedBytes = 0;
+    }
+    _transform(chunk, _encoding, callback) {
         this.push(chunk);
         this.loadedBytes += chunk.length;
         this.progressCallback({ loadedBytes: this.loadedBytes });
         callback(undefined);
-    };
-    return ReportTransform;
-}(stream.Transform));
-var FetchHttpClient = /** @class */ (function () {
-    function FetchHttpClient() {
     }
-    FetchHttpClient.prototype.sendRequest = function (httpRequest) {
+}
+class FetchHttpClient {
+    async sendRequest(httpRequest) {
         var _a;
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var abortController$1, abortListener, formData, requestForm_1, appendFormValue, _i, _b, formKey, formValue, j, contentType, body, onUploadProgress, uploadReportStream, platformSpecificRequestInit, requestInit, operationResponse, response, headers, streaming, _c, onDownloadProgress, responseBody, downloadReportStream, length_1, error_1, fetchError, uploadStreamDone, downloadStreamDone;
-            var _d;
-            return tslib.__generator(this, function (_e) {
-                switch (_e.label) {
-                    case 0:
-                        if (!httpRequest && typeof httpRequest !== "object") {
-                            throw new Error("'httpRequest' (WebResourceLike) cannot be null or undefined and must be of type object.");
-                        }
-                        abortController$1 = new abortController.AbortController();
-                        if (httpRequest.abortSignal) {
-                            if (httpRequest.abortSignal.aborted) {
-                                throw new abortController.AbortError("The operation was aborted.");
-                            }
-                            abortListener = function (event) {
-                                if (event.type === "abort") {
-                                    abortController$1.abort();
-                                }
-                            };
-                            httpRequest.abortSignal.addEventListener("abort", abortListener);
-                        }
-                        if (httpRequest.timeout) {
-                            setTimeout(function () {
-                                abortController$1.abort();
-                            }, httpRequest.timeout);
-                        }
-                        if (httpRequest.formData) {
-                            formData = httpRequest.formData;
-                            requestForm_1 = new FormData();
-                            appendFormValue = function (key, value) {
-                                // value function probably returns a stream so we can provide a fresh stream on each retry
-                                if (typeof value === "function") {
-                                    value = value();
-                                }
-                                if (value &&
-                                    Object.prototype.hasOwnProperty.call(value, "value") &&
-                                    Object.prototype.hasOwnProperty.call(value, "options")) {
-                                    requestForm_1.append(key, value.value, value.options);
-                                }
-                                else {
-                                    requestForm_1.append(key, value);
-                                }
-                            };
-                            for (_i = 0, _b = Object.keys(formData); _i < _b.length; _i++) {
-                                formKey = _b[_i];
-                                formValue = formData[formKey];
-                                if (Array.isArray(formValue)) {
-                                    for (j = 0; j < formValue.length; j++) {
-                                        appendFormValue(formKey, formValue[j]);
-                                    }
-                                }
-                                else {
-                                    appendFormValue(formKey, formValue);
-                                }
-                            }
-                            httpRequest.body = requestForm_1;
-                            httpRequest.formData = undefined;
-                            contentType = httpRequest.headers.get("Content-Type");
-                            if (contentType && contentType.indexOf("multipart/form-data") !== -1) {
-                                if (typeof requestForm_1.getBoundary === "function") {
-                                    httpRequest.headers.set("Content-Type", "multipart/form-data; boundary=" + requestForm_1.getBoundary());
-                                }
-                                else {
-                                    // browser will automatically apply a suitable content-type header
-                                    httpRequest.headers.remove("Content-Type");
-                                }
-                            }
-                        }
-                        body = httpRequest.body
-                            ? typeof httpRequest.body === "function"
-                                ? httpRequest.body()
-                                : httpRequest.body
-                            : undefined;
-                        if (httpRequest.onUploadProgress && httpRequest.body) {
-                            onUploadProgress = httpRequest.onUploadProgress;
-                            uploadReportStream = new ReportTransform(onUploadProgress);
-                            if (isReadableStream(body)) {
-                                body.pipe(uploadReportStream);
-                            }
-                            else {
-                                uploadReportStream.end(body);
-                            }
-                            body = uploadReportStream;
-                        }
-                        return [4 /*yield*/, this.prepareRequest(httpRequest)];
-                    case 1:
-                        platformSpecificRequestInit = _e.sent();
-                        requestInit = tslib.__assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, signal: abortController$1.signal, redirect: "manual" }, platformSpecificRequestInit);
-                        _e.label = 2;
-                    case 2:
-                        _e.trys.push([2, 8, 9, 10]);
-                        return [4 /*yield*/, this.fetch(httpRequest.url, requestInit)];
-                    case 3:
-                        response = _e.sent();
-                        headers = parseHeaders(response.headers);
-                        streaming = ((_a = httpRequest.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(response.status)) ||
-                            httpRequest.streamResponseBody;
-                        _d = {
-                            headers: headers,
-                            request: httpRequest,
-                            status: response.status,
-                            readableStreamBody: streaming
-                                ? response.body
-                                : undefined
-                        };
-                        if (!!streaming) return [3 /*break*/, 5];
-                        return [4 /*yield*/, response.text()];
-                    case 4:
-                        _c = _e.sent();
-                        return [3 /*break*/, 6];
-                    case 5:
-                        _c = undefined;
-                        _e.label = 6;
-                    case 6:
-                        operationResponse = (_d.bodyAsText = _c,
-                            _d);
-                        onDownloadProgress = httpRequest.onDownloadProgress;
-                        if (onDownloadProgress) {
-                            responseBody = response.body || undefined;
-                            if (isReadableStream(responseBody)) {
-                                downloadReportStream = new ReportTransform(onDownloadProgress);
-                                responseBody.pipe(downloadReportStream);
-                                operationResponse.readableStreamBody = downloadReportStream;
-                            }
-                            else {
-                                length_1 = parseInt(headers.get("Content-Length")) || undefined;
-                                if (length_1) {
-                                    // Calling callback for non-stream response for consistency with browser
-                                    onDownloadProgress({ loadedBytes: length_1 });
-                                }
-                            }
-                        }
-                        return [4 /*yield*/, this.processRequest(operationResponse)];
-                    case 7:
-                        _e.sent();
-                        return [2 /*return*/, operationResponse];
-                    case 8:
-                        error_1 = _e.sent();
-                        fetchError = error_1;
-                        if (fetchError.code === "ENOTFOUND") {
-                            throw new RestError(fetchError.message, RestError.REQUEST_SEND_ERROR, undefined, httpRequest);
-                        }
-                        else if (fetchError.type === "aborted") {
-                            throw new abortController.AbortError("The operation was aborted.");
-                        }
-                        throw fetchError;
-                    case 9:
-                        // clean up event listener
-                        if (httpRequest.abortSignal && abortListener) {
-                            uploadStreamDone = Promise.resolve();
-                            if (isReadableStream(body)) {
-                                uploadStreamDone = isStreamComplete(body);
-                            }
-                            downloadStreamDone = Promise.resolve();
-                            if (isReadableStream(operationResponse === null || operationResponse === void 0 ? void 0 : operationResponse.readableStreamBody)) {
-                                downloadStreamDone = isStreamComplete(operationResponse.readableStreamBody);
-                            }
-                            Promise.all([uploadStreamDone, downloadStreamDone])
-                                .then(function () {
-                                var _a;
-                                (_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener);
-                                return;
-                            })
-                                .catch(function (e) {
-                                logger.warning("Error when cleaning up abortListener on httpRequest", e);
-                            });
-                        }
-                        return [7 /*endfinally*/];
-                    case 10: return [2 /*return*/];
+        if (!httpRequest && typeof httpRequest !== "object") {
+            throw new Error("'httpRequest' (WebResourceLike) cannot be null or undefined and must be of type object.");
+        }
+        const abortController$1 = new abortController.AbortController();
+        let abortListener;
+        if (httpRequest.abortSignal) {
+            if (httpRequest.abortSignal.aborted) {
+                throw new abortController.AbortError("The operation was aborted.");
+            }
+            abortListener = (event) => {
+                if (event.type === "abort") {
+                    abortController$1.abort();
                 }
-            });
-        });
-    };
-    return FetchHttpClient;
-}());
+            };
+            httpRequest.abortSignal.addEventListener("abort", abortListener);
+        }
+        if (httpRequest.timeout) {
+            setTimeout(() => {
+                abortController$1.abort();
+            }, httpRequest.timeout);
+        }
+        if (httpRequest.formData) {
+            const formData = httpRequest.formData;
+            const requestForm = new FormData();
+            const appendFormValue = (key, value) => {
+                // value function probably returns a stream so we can provide a fresh stream on each retry
+                if (typeof value === "function") {
+                    value = value();
+                }
+                if (value &&
+                    Object.prototype.hasOwnProperty.call(value, "value") &&
+                    Object.prototype.hasOwnProperty.call(value, "options")) {
+                    requestForm.append(key, value.value, value.options);
+                }
+                else {
+                    requestForm.append(key, value);
+                }
+            };
+            for (const formKey of Object.keys(formData)) {
+                const formValue = formData[formKey];
+                if (Array.isArray(formValue)) {
+                    for (let j = 0; j < formValue.length; j++) {
+                        appendFormValue(formKey, formValue[j]);
+                    }
+                }
+                else {
+                    appendFormValue(formKey, formValue);
+                }
+            }
+            httpRequest.body = requestForm;
+            httpRequest.formData = undefined;
+            const contentType = httpRequest.headers.get("Content-Type");
+            if (contentType && contentType.indexOf("multipart/form-data") !== -1) {
+                if (typeof requestForm.getBoundary === "function") {
+                    httpRequest.headers.set("Content-Type", `multipart/form-data; boundary=${requestForm.getBoundary()}`);
+                }
+                else {
+                    // browser will automatically apply a suitable content-type header
+                    httpRequest.headers.remove("Content-Type");
+                }
+            }
+        }
+        let body = httpRequest.body
+            ? typeof httpRequest.body === "function"
+                ? httpRequest.body()
+                : httpRequest.body
+            : undefined;
+        if (httpRequest.onUploadProgress && httpRequest.body) {
+            const onUploadProgress = httpRequest.onUploadProgress;
+            const uploadReportStream = new ReportTransform(onUploadProgress);
+            if (isReadableStream(body)) {
+                body.pipe(uploadReportStream);
+            }
+            else {
+                uploadReportStream.end(body);
+            }
+            body = uploadReportStream;
+        }
+        const platformSpecificRequestInit = await this.prepareRequest(httpRequest);
+        const requestInit = Object.assign({ body: body, headers: httpRequest.headers.rawHeaders(), method: httpRequest.method, signal: abortController$1.signal, redirect: "manual" }, platformSpecificRequestInit);
+        let operationResponse;
+        try {
+            const response = await this.fetch(httpRequest.url, requestInit);
+            const headers = parseHeaders(response.headers);
+            const streaming = ((_a = httpRequest.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(response.status)) ||
+                httpRequest.streamResponseBody;
+            operationResponse = {
+                headers: headers,
+                request: httpRequest,
+                status: response.status,
+                readableStreamBody: streaming
+                    ? response.body
+                    : undefined,
+                bodyAsText: !streaming ? await response.text() : undefined
+            };
+            const onDownloadProgress = httpRequest.onDownloadProgress;
+            if (onDownloadProgress) {
+                const responseBody = response.body || undefined;
+                if (isReadableStream(responseBody)) {
+                    const downloadReportStream = new ReportTransform(onDownloadProgress);
+                    responseBody.pipe(downloadReportStream);
+                    operationResponse.readableStreamBody = downloadReportStream;
+                }
+                else {
+                    const length = parseInt(headers.get("Content-Length")) || undefined;
+                    if (length) {
+                        // Calling callback for non-stream response for consistency with browser
+                        onDownloadProgress({ loadedBytes: length });
+                    }
+                }
+            }
+            await this.processRequest(operationResponse);
+            return operationResponse;
+        }
+        catch (error) {
+            const fetchError = error;
+            if (fetchError.code === "ENOTFOUND") {
+                throw new RestError(fetchError.message, RestError.REQUEST_SEND_ERROR, undefined, httpRequest);
+            }
+            else if (fetchError.type === "aborted") {
+                throw new abortController.AbortError("The operation was aborted.");
+            }
+            throw fetchError;
+        }
+        finally {
+            // clean up event listener
+            if (httpRequest.abortSignal && abortListener) {
+                let uploadStreamDone = Promise.resolve();
+                if (isReadableStream(body)) {
+                    uploadStreamDone = isStreamComplete(body);
+                }
+                let downloadStreamDone = Promise.resolve();
+                if (isReadableStream(operationResponse === null || operationResponse === void 0 ? void 0 : operationResponse.readableStreamBody)) {
+                    downloadStreamDone = isStreamComplete(operationResponse.readableStreamBody);
+                }
+                Promise.all([uploadStreamDone, downloadStreamDone])
+                    .then(() => {
+                    var _a;
+                    (_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener("abort", abortListener);
+                    return;
+                })
+                    .catch((e) => {
+                    logger.warning("Error when cleaning up abortListener on httpRequest", e);
+                });
+            }
+        }
+    }
+}
 function isReadableStream(body) {
     return body && typeof body.pipe === "function";
 }
 function isStreamComplete(stream) {
-    return new Promise(function (resolve) {
+    return new Promise((resolve) => {
         stream.on("close", resolve);
         stream.on("end", resolve);
         stream.on("error", resolve);
     });
 }
 function parseHeaders(headers) {
-    var httpHeaders = new HttpHeaders();
-    headers.forEach(function (value, key) {
+    const httpHeaders = new HttpHeaders();
+    headers.forEach((value, key) => {
         httpHeaders.set(key, value);
     });
     return httpHeaders;
@@ -22028,14 +21381,14 @@ function parseHeaders(headers) {
 
 // Copyright (c) Microsoft Corporation.
 function createProxyAgent(requestUrl, proxySettings, headers) {
-    var host = URLBuilder.parse(proxySettings.host).getHost();
+    const host = URLBuilder.parse(proxySettings.host).getHost();
     if (!host) {
         throw new Error("Expecting a non-empty host in proxy settings.");
     }
     if (!isValidPort(proxySettings.port)) {
         throw new Error("Expecting a valid port number in the range of [0, 65535] in proxy settings.");
     }
-    var tunnelOptions = {
+    const tunnelOptions = {
         proxy: {
             host: host,
             port: proxySettings.port,
@@ -22043,18 +21396,21 @@ function createProxyAgent(requestUrl, proxySettings, headers) {
         }
     };
     if (proxySettings.username && proxySettings.password) {
-        tunnelOptions.proxy.proxyAuth = proxySettings.username + ":" + proxySettings.password;
+        tunnelOptions.proxy.proxyAuth = `${proxySettings.username}:${proxySettings.password}`;
     }
-    var isRequestHttps = isUrlHttps(requestUrl);
-    var isProxyHttps = isUrlHttps(proxySettings.host);
-    var proxyAgent = {
+    else if (proxySettings.username) {
+        tunnelOptions.proxy.proxyAuth = `${proxySettings.username}`;
+    }
+    const isRequestHttps = isUrlHttps(requestUrl);
+    const isProxyHttps = isUrlHttps(proxySettings.host);
+    const proxyAgent = {
         isHttps: isRequestHttps,
         agent: createTunnel(isRequestHttps, isProxyHttps, tunnelOptions)
     };
     return proxyAgent;
 }
 function isUrlHttps(url) {
-    var urlScheme = URLBuilder.parse(url).getScheme() || "";
+    const urlScheme = URLBuilder.parse(url).getScheme() || "";
     return urlScheme.toLowerCase() === "https";
 }
 function createTunnel(isRequestHttps, isProxyHttps, tunnelOptions) {
@@ -22081,26 +21437,24 @@ function isValidPort(port) {
 function getCachedAgent(isHttps, agentCache) {
     return isHttps ? agentCache.httpsAgent : agentCache.httpAgent;
 }
-var NodeFetchHttpClient = /** @class */ (function (_super) {
-    tslib.__extends(NodeFetchHttpClient, _super);
-    function NodeFetchHttpClient() {
-        var _this = _super !== null && _super.apply(this, arguments) || this;
-        _this.proxyAgents = {};
-        _this.keepAliveAgents = {};
-        _this.cookieJar = new tough.CookieJar(undefined, { looseMode: true });
-        return _this;
+class NodeFetchHttpClient extends FetchHttpClient {
+    constructor() {
+        super(...arguments);
+        this.proxyAgents = {};
+        this.keepAliveAgents = {};
+        this.cookieJar = new tough.CookieJar(undefined, { looseMode: true });
     }
-    NodeFetchHttpClient.prototype.getOrCreateAgent = function (httpRequest) {
-        var isHttps = isUrlHttps(httpRequest.url);
+    getOrCreateAgent(httpRequest) {
+        const isHttps = isUrlHttps(httpRequest.url);
         // At the moment, proxy settings and keepAlive are mutually
         // exclusive because the 'tunnel' library currently lacks the
         // ability to create a proxy with keepAlive turned on.
         if (httpRequest.proxySettings) {
-            var agent = getCachedAgent(isHttps, this.proxyAgents);
+            let agent = getCachedAgent(isHttps, this.proxyAgents);
             if (agent) {
                 return agent;
             }
-            var tunnel = createProxyAgent(httpRequest.url, httpRequest.proxySettings, httpRequest.headers);
+            const tunnel = createProxyAgent(httpRequest.url, httpRequest.proxySettings, httpRequest.headers);
             agent = tunnel.agent;
             if (tunnel.isHttps) {
                 this.proxyAgents.httpsAgent = tunnel.agent;
@@ -22111,11 +21465,11 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
             return agent;
         }
         else if (httpRequest.keepAlive) {
-            var agent = getCachedAgent(isHttps, this.keepAliveAgents);
+            let agent = getCachedAgent(isHttps, this.keepAliveAgents);
             if (agent) {
                 return agent;
             }
-            var agentOptions = {
+            const agentOptions = {
                 keepAlive: httpRequest.keepAlive
             };
             if (isHttps) {
@@ -22129,77 +21483,49 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
         else {
             return isHttps ? https.globalAgent : http.globalAgent;
         }
-    };
+    }
     // eslint-disable-next-line @azure/azure-sdk/ts-apisurface-standardized-verbs
-    NodeFetchHttpClient.prototype.fetch = function (input, init) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, node_fetch(input, init)];
+    async fetch(input, init) {
+        return node_fetch(input, init);
+    }
+    async prepareRequest(httpRequest) {
+        const requestInit = {};
+        if (this.cookieJar && !httpRequest.headers.get("Cookie")) {
+            const cookieString = await new Promise((resolve, reject) => {
+                this.cookieJar.getCookieString(httpRequest.url, (err, cookie) => {
+                    if (err) {
+                        reject(err);
+                    }
+                    else {
+                        resolve(cookie);
+                    }
+                });
             });
-        });
-    };
-    NodeFetchHttpClient.prototype.prepareRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var requestInit, cookieString;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        requestInit = {};
-                        if (!(this.cookieJar && !httpRequest.headers.get("Cookie"))) return [3 /*break*/, 2];
-                        return [4 /*yield*/, new Promise(function (resolve, reject) {
-                                _this.cookieJar.getCookieString(httpRequest.url, function (err, cookie) {
-                                    if (err) {
-                                        reject(err);
-                                    }
-                                    else {
-                                        resolve(cookie);
-                                    }
-                                });
-                            })];
-                    case 1:
-                        cookieString = _a.sent();
-                        httpRequest.headers.set("Cookie", cookieString);
-                        _a.label = 2;
-                    case 2:
-                        // Set the http(s) agent
-                        requestInit.agent = this.getOrCreateAgent(httpRequest);
-                        requestInit.compress = httpRequest.decompressResponse;
-                        return [2 /*return*/, requestInit];
-                }
-            });
-        });
-    };
-    NodeFetchHttpClient.prototype.processRequest = function (operationResponse) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var setCookieHeader_1;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!this.cookieJar) return [3 /*break*/, 2];
-                        setCookieHeader_1 = operationResponse.headers.get("Set-Cookie");
-                        if (!(setCookieHeader_1 !== undefined)) return [3 /*break*/, 2];
-                        return [4 /*yield*/, new Promise(function (resolve, reject) {
-                                _this.cookieJar.setCookie(setCookieHeader_1, operationResponse.request.url, { ignoreError: true }, function (err) {
-                                    if (err) {
-                                        reject(err);
-                                    }
-                                    else {
-                                        resolve();
-                                    }
-                                });
-                            })];
-                    case 1:
-                        _a.sent();
-                        _a.label = 2;
-                    case 2: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return NodeFetchHttpClient;
-}(FetchHttpClient));
+            httpRequest.headers.set("Cookie", cookieString);
+        }
+        // Set the http(s) agent
+        requestInit.agent = this.getOrCreateAgent(httpRequest);
+        requestInit.compress = httpRequest.decompressResponse;
+        return requestInit;
+    }
+    async processRequest(operationResponse) {
+        if (this.cookieJar) {
+            const setCookieHeader = operationResponse.headers.get("Set-Cookie");
+            if (setCookieHeader !== undefined) {
+                await new Promise((resolve, reject) => {
+                    this.cookieJar.setCookie(setCookieHeader, operationResponse.request.url, { ignoreError: true }, (err) => {
+                        if (err) {
+                            reject(err);
+                        }
+                        else {
+                            resolve();
+                        }
+                    });
+                });
+            }
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 (function (HttpPipelineLogLevel) {
@@ -22227,10 +21553,10 @@ var NodeFetchHttpClient = /** @class */ (function (_super) {
  * @param opts - OperationOptions object to convert to RequestOptionsBase
  */
 function operationOptionsToRequestOptionsBase(opts) {
-    var requestOptions = opts.requestOptions, tracingOptions = opts.tracingOptions, additionalOptions = tslib.__rest(opts, ["requestOptions", "tracingOptions"]);
-    var result = additionalOptions;
+    const { requestOptions, tracingOptions } = opts, additionalOptions = tslib.__rest(opts, ["requestOptions", "tracingOptions"]);
+    let result = additionalOptions;
     if (requestOptions) {
-        result = tslib.__assign(tslib.__assign({}, result), requestOptions);
+        result = Object.assign(Object.assign({}, result), requestOptions);
     }
     if (tracingOptions) {
         result.spanOptions = tracingOptions.spanOptions;
@@ -22240,8 +21566,8 @@ function operationOptionsToRequestOptionsBase(opts) {
 }
 
 // Copyright (c) Microsoft Corporation.
-var BaseRequestPolicy = /** @class */ (function () {
-    function BaseRequestPolicy(_nextPolicy, _options) {
+class BaseRequestPolicy {
+    constructor(_nextPolicy, _options) {
         this._nextPolicy = _nextPolicy;
         this._options = _options;
     }
@@ -22250,25 +21576,24 @@ var BaseRequestPolicy = /** @class */ (function () {
      * @param logLevel - The log level of the log that will be logged.
      * @returns Whether or not a log with the provided log level should be logged.
      */
-    BaseRequestPolicy.prototype.shouldLog = function (logLevel) {
+    shouldLog(logLevel) {
         return this._options.shouldLog(logLevel);
-    };
+    }
     /**
      * Attempt to log the provided message to the provided logger. If no logger was provided or if
      * the log level does not meat the logger's threshold, then nothing will be logged.
      * @param logLevel - The log level of this log.
      * @param message - The message of this log.
      */
-    BaseRequestPolicy.prototype.log = function (logLevel, message) {
+    log(logLevel, message) {
         this._options.log(logLevel, message);
-    };
-    return BaseRequestPolicy;
-}());
+    }
+}
 /**
  * Optional properties that can be used when creating a RequestPolicy.
  */
-var RequestPolicyOptions = /** @class */ (function () {
-    function RequestPolicyOptions(_logger) {
+class RequestPolicyOptions {
+    constructor(_logger) {
         this._logger = _logger;
     }
     /**
@@ -22276,104 +21601,89 @@ var RequestPolicyOptions = /** @class */ (function () {
      * @param logLevel - The log level of the log that will be logged.
      * @returns Whether or not a log with the provided log level should be logged.
      */
-    RequestPolicyOptions.prototype.shouldLog = function (logLevel) {
+    shouldLog(logLevel) {
         return (!!this._logger &&
             logLevel !== exports.HttpPipelineLogLevel.OFF &&
             logLevel <= this._logger.minimumLogLevel);
-    };
+    }
     /**
      * Attempt to log the provided message to the provided logger. If no logger was provided or if
      * the log level does not meet the logger's threshold, then nothing will be logged.
      * @param logLevel - The log level of this log.
      * @param message - The message of this log.
      */
-    RequestPolicyOptions.prototype.log = function (logLevel, message) {
+    log(logLevel, message) {
         if (this._logger && this.shouldLog(logLevel)) {
             this._logger.log(logLevel, message);
         }
-    };
-    return RequestPolicyOptions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-function logPolicy(loggingOptions) {
-    if (loggingOptions === void 0) { loggingOptions = {}; }
+function logPolicy(loggingOptions = {}) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new LogPolicy(nextPolicy, options, loggingOptions);
         }
     };
 }
-var LogPolicy = /** @class */ (function (_super) {
-    tslib.__extends(LogPolicy, _super);
-    function LogPolicy(nextPolicy, options, _a) {
-        var _b = _a === void 0 ? {} : _a, _c = _b.logger, logger$1 = _c === void 0 ? logger.info : _c, _d = _b.allowedHeaderNames, allowedHeaderNames = _d === void 0 ? [] : _d, _e = _b.allowedQueryParameters, allowedQueryParameters = _e === void 0 ? [] : _e;
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.logger = logger$1;
-        _this.sanitizer = new Sanitizer({ allowedHeaderNames: allowedHeaderNames, allowedQueryParameters: allowedQueryParameters });
-        return _this;
+class LogPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, { logger: logger$1 = logger.info, allowedHeaderNames = [], allowedQueryParameters = [] } = {}) {
+        super(nextPolicy, options);
+        this.logger = logger$1;
+        this.sanitizer = new Sanitizer({ allowedHeaderNames, allowedQueryParameters });
     }
-    Object.defineProperty(LogPolicy.prototype, "allowedHeaderNames", {
-        /**
-         * Header names whose values will be logged when logging is enabled. Defaults to
-         * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
-         * specified in this field will be added to that list.  Any other values will
-         * be written to logs as "REDACTED".
-         * @deprecated Pass these into the constructor instead.
-         */
-        get: function () {
-            return this.sanitizer.allowedHeaderNames;
-        },
-        /**
-         * Header names whose values will be logged when logging is enabled. Defaults to
-         * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
-         * specified in this field will be added to that list.  Any other values will
-         * be written to logs as "REDACTED".
-         * @deprecated Pass these into the constructor instead.
-         */
-        set: function (allowedHeaderNames) {
-            this.sanitizer.allowedHeaderNames = allowedHeaderNames;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(LogPolicy.prototype, "allowedQueryParameters", {
-        /**
-         * Query string names whose values will be logged when logging is enabled. By default no
-         * query string values are logged.
-         * @deprecated Pass these into the constructor instead.
-         */
-        get: function () {
-            return this.sanitizer.allowedQueryParameters;
-        },
-        /**
-         * Query string names whose values will be logged when logging is enabled. By default no
-         * query string values are logged.
-         * @deprecated Pass these into the constructor instead.
-         */
-        set: function (allowedQueryParameters) {
-            this.sanitizer.allowedQueryParameters = allowedQueryParameters;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    LogPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    /**
+     * Header names whose values will be logged when logging is enabled. Defaults to
+     * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
+     * specified in this field will be added to that list.  Any other values will
+     * be written to logs as "REDACTED".
+     * @deprecated Pass these into the constructor instead.
+     */
+    get allowedHeaderNames() {
+        return this.sanitizer.allowedHeaderNames;
+    }
+    /**
+     * Header names whose values will be logged when logging is enabled. Defaults to
+     * Date, traceparent, x-ms-client-request-id, and x-ms-request id.  Any headers
+     * specified in this field will be added to that list.  Any other values will
+     * be written to logs as "REDACTED".
+     * @deprecated Pass these into the constructor instead.
+     */
+    set allowedHeaderNames(allowedHeaderNames) {
+        this.sanitizer.allowedHeaderNames = allowedHeaderNames;
+    }
+    /**
+     * Query string names whose values will be logged when logging is enabled. By default no
+     * query string values are logged.
+     * @deprecated Pass these into the constructor instead.
+     */
+    get allowedQueryParameters() {
+        return this.sanitizer.allowedQueryParameters;
+    }
+    /**
+     * Query string names whose values will be logged when logging is enabled. By default no
+     * query string values are logged.
+     * @deprecated Pass these into the constructor instead.
+     */
+    set allowedQueryParameters(allowedQueryParameters) {
+        this.sanitizer.allowedQueryParameters = allowedQueryParameters;
+    }
+    sendRequest(request) {
         if (!this.logger.enabled)
             return this._nextPolicy.sendRequest(request);
         this.logRequest(request);
-        return this._nextPolicy.sendRequest(request).then(function (response) { return _this.logResponse(response); });
-    };
-    LogPolicy.prototype.logRequest = function (request) {
-        this.logger("Request: " + this.sanitizer.sanitize(request));
-    };
-    LogPolicy.prototype.logResponse = function (response) {
-        this.logger("Response status code: " + response.status);
-        this.logger("Headers: " + this.sanitizer.sanitize(response.headers));
+        return this._nextPolicy.sendRequest(request).then((response) => this.logResponse(response));
+    }
+    logRequest(request) {
+        this.logger(`Request: ${this.sanitizer.sanitize(request)}`);
+    }
+    logResponse(response) {
+        this.logger(`Response status code: ${response.status}`);
+        this.logger(`Headers: ${this.sanitizer.sanitize(response.headers)}`);
         return response;
-    };
-    return LogPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -22386,7 +21696,7 @@ function getPathStringFromParameter(parameter) {
     return getPathStringFromParameterPath(parameter.parameterPath, parameter.mapper);
 }
 function getPathStringFromParameterPath(parameterPath, mapper) {
-    var result;
+    let result;
     if (typeof parameterPath === "string") {
         result = parameterPath;
     }
@@ -22405,9 +21715,9 @@ function getPathStringFromParameterPath(parameterPath, mapper) {
  * @internal
  */
 function getStreamResponseStatusCodes(operationSpec) {
-    var result = new Set();
-    for (var statusCode in operationSpec.responses) {
-        var operationResponse = operationSpec.responses[statusCode];
+    const result = new Set();
+    for (const statusCode in operationSpec.responses) {
+        const operationResponse = operationSpec.responses[statusCode];
         if (operationResponse.bodyMapper &&
             operationResponse.bodyMapper.type.name === MapperType.Stream) {
             result.add(Number(statusCode));
@@ -22421,7 +21731,7 @@ function getStreamResponseStatusCodes(operationSpec) {
 // by the xm2js library is mutable. See https://github.com/Leonidas-from-XIV/node-xml2js/issues/536
 // By creating a new copy of the settings each time we instantiate the parser,
 // we are safeguarding against the possibility of the default settings being mutated elsewhere unintentionally.
-var xml2jsDefaultOptionsV2 = {
+const xml2jsDefaultOptionsV2 = {
     explicitCharkey: false,
     trim: false,
     normalize: false,
@@ -22462,10 +21772,10 @@ var xml2jsDefaultOptionsV2 = {
     cdata: false
 };
 // The xml2js settings for general XML parsing operations.
-var xml2jsParserSettings = Object.assign({}, xml2jsDefaultOptionsV2);
+const xml2jsParserSettings = Object.assign({}, xml2jsDefaultOptionsV2);
 xml2jsParserSettings.explicitArray = false;
 // The xml2js settings for general XML building operations.
-var xml2jsBuilderSettings = Object.assign({}, xml2jsDefaultOptionsV2);
+const xml2jsBuilderSettings = Object.assign({}, xml2jsDefaultOptionsV2);
 xml2jsBuilderSettings.explicitArray = false;
 xml2jsBuilderSettings.renderOpts = {
     pretty: false
@@ -22475,12 +21785,11 @@ xml2jsBuilderSettings.renderOpts = {
  * @param obj - JSON object to be converted into XML string
  * @param opts - Options that govern the parsing of given JSON object
  */
-function stringifyXML(obj, opts) {
+function stringifyXML(obj, opts = {}) {
     var _a;
-    if (opts === void 0) { opts = {}; }
     xml2jsBuilderSettings.rootName = opts.rootName;
     xml2jsBuilderSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
-    var builder = new xml2js.Builder(xml2jsBuilderSettings);
+    const builder = new xml2js.Builder(xml2jsBuilderSettings);
     return builder.buildObject(obj);
 }
 /**
@@ -22488,18 +21797,17 @@ function stringifyXML(obj, opts) {
  * @param str - String containing the XML content to be parsed into JSON
  * @param opts - Options that govern the parsing of given xml string
  */
-function parseXML(str, opts) {
+function parseXML(str, opts = {}) {
     var _a;
-    if (opts === void 0) { opts = {}; }
     xml2jsParserSettings.explicitRoot = !!opts.includeRoot;
     xml2jsParserSettings.charkey = (_a = opts.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
-    var xmlParser = new xml2js.Parser(xml2jsParserSettings);
-    return new Promise(function (resolve, reject) {
+    const xmlParser = new xml2js.Parser(xml2jsParserSettings);
+    return new Promise((resolve, reject) => {
         if (!str) {
             reject(new Error("Document is empty"));
         }
         else {
-            xmlParser.parseString(str, function (err, res) {
+            xmlParser.parseString(str, (err, res) => {
                 if (err) {
                     reject(err);
                 }
@@ -22518,14 +21826,14 @@ function parseXML(str, opts) {
  */
 function deserializationPolicy(deserializationContentTypes, parsingOptions) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new DeserializationPolicy(nextPolicy, options, deserializationContentTypes, parsingOptions);
         }
     };
 }
-var defaultJsonContentTypes = ["application/json", "text/json"];
-var defaultXmlContentTypes = ["application/xml", "application/atom+xml"];
-var DefaultDeserializationOptions = {
+const defaultJsonContentTypes = ["application/json", "text/json"];
+const defaultXmlContentTypes = ["application/xml", "application/atom+xml"];
+const DefaultDeserializationOptions = {
     expectedContentTypes: {
         json: defaultJsonContentTypes,
         xml: defaultXmlContentTypes
@@ -22535,39 +21843,28 @@ var DefaultDeserializationOptions = {
  * A RequestPolicy that will deserialize HTTP response bodies and headers as they pass through the
  * HTTP pipeline.
  */
-var DeserializationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(DeserializationPolicy, _super);
-    function DeserializationPolicy(nextPolicy, requestPolicyOptions, deserializationContentTypes, parsingOptions) {
-        if (parsingOptions === void 0) { parsingOptions = {}; }
+class DeserializationPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, requestPolicyOptions, deserializationContentTypes, parsingOptions = {}) {
         var _a;
-        var _this = _super.call(this, nextPolicy, requestPolicyOptions) || this;
-        _this.jsonContentTypes =
+        super(nextPolicy, requestPolicyOptions);
+        this.jsonContentTypes =
             (deserializationContentTypes && deserializationContentTypes.json) || defaultJsonContentTypes;
-        _this.xmlContentTypes =
+        this.xmlContentTypes =
             (deserializationContentTypes && deserializationContentTypes.xml) || defaultXmlContentTypes;
-        _this.xmlCharKey = (_a = parsingOptions.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
-        return _this;
+        this.xmlCharKey = (_a = parsingOptions.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;
     }
-    DeserializationPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this._nextPolicy.sendRequest(request).then(function (response) {
-                        return deserializeResponseBody(_this.jsonContentTypes, _this.xmlContentTypes, response, {
-                            xmlCharKey: _this.xmlCharKey
-                        });
-                    })];
-            });
-        });
-    };
-    return DeserializationPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        return this._nextPolicy.sendRequest(request).then((response) => deserializeResponseBody(this.jsonContentTypes, this.xmlContentTypes, response, {
+            xmlCharKey: this.xmlCharKey
+        }));
+    }
+}
 function getOperationResponse(parsedResponse) {
-    var result;
-    var request = parsedResponse.request;
-    var operationSpec = request.operationSpec;
+    let result;
+    const request = parsedResponse.request;
+    const operationSpec = request.operationSpec;
     if (operationSpec) {
-        var operationResponseGetter = request.operationResponseGetter;
+        const operationResponseGetter = request.operationResponseGetter;
         if (!operationResponseGetter) {
             result = operationSpec.responses[parsedResponse.status];
         }
@@ -22578,8 +21875,8 @@ function getOperationResponse(parsedResponse) {
     return result;
 }
 function shouldDeserializeResponse(parsedResponse) {
-    var shouldDeserialize = parsedResponse.request.shouldDeserialize;
-    var result;
+    const shouldDeserialize = parsedResponse.request.shouldDeserialize;
+    let result;
     if (shouldDeserialize === undefined) {
         result = true;
     }
@@ -22591,24 +21888,23 @@ function shouldDeserializeResponse(parsedResponse) {
     }
     return result;
 }
-function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options) {
+function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options = {}) {
     var _a, _b, _c;
-    if (options === void 0) { options = {}; }
-    var updatedOptions = {
+    const updatedOptions = {
         rootName: (_a = options.rootName) !== null && _a !== void 0 ? _a : "",
         includeRoot: (_b = options.includeRoot) !== null && _b !== void 0 ? _b : false,
         xmlCharKey: (_c = options.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY
     };
-    return parse(jsonContentTypes, xmlContentTypes, response, updatedOptions).then(function (parsedResponse) {
+    return parse(jsonContentTypes, xmlContentTypes, response, updatedOptions).then((parsedResponse) => {
         if (!shouldDeserializeResponse(parsedResponse)) {
             return parsedResponse;
         }
-        var operationSpec = parsedResponse.request.operationSpec;
+        const operationSpec = parsedResponse.request.operationSpec;
         if (!operationSpec || !operationSpec.responses) {
             return parsedResponse;
         }
-        var responseSpec = getOperationResponse(parsedResponse);
-        var _a = handleErrorResponse(parsedResponse, operationSpec, responseSpec), error = _a.error, shouldReturnResponse = _a.shouldReturnResponse;
+        const responseSpec = getOperationResponse(parsedResponse);
+        const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec);
         if (error) {
             throw error;
         }
@@ -22619,7 +21915,7 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, op
         // use it to deserialize the response.
         if (responseSpec) {
             if (responseSpec.bodyMapper) {
-                var valueToDeserialize = parsedResponse.parsedBody;
+                let valueToDeserialize = parsedResponse.parsedBody;
                 if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperType.Sequence) {
                     valueToDeserialize =
                         typeof valueToDeserialize === "object"
@@ -22630,7 +21926,7 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, op
                     parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, "operationRes.parsedBody", options);
                 }
                 catch (innerError) {
-                    var restError = new RestError("Error " + innerError + " occurred in deserializing the responseBody - " + parsedResponse.bodyAsText, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
+                    const restError = new RestError(`Error ${innerError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
                     throw restError;
                 }
             }
@@ -22646,14 +21942,14 @@ function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, op
     });
 }
 function isOperationSpecEmpty(operationSpec) {
-    var expectedStatusCodes = Object.keys(operationSpec.responses);
+    const expectedStatusCodes = Object.keys(operationSpec.responses);
     return (expectedStatusCodes.length === 0 ||
         (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === "default"));
 }
 function handleErrorResponse(parsedResponse, operationSpec, responseSpec) {
     var _a;
-    var isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;
-    var isExpectedStatusCode = isOperationSpecEmpty(operationSpec)
+    const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;
+    const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)
         ? isSuccessByStatus
         : !!responseSpec;
     if (isExpectedStatusCode) {
@@ -22666,35 +21962,35 @@ function handleErrorResponse(parsedResponse, operationSpec, responseSpec) {
             return { error: null, shouldReturnResponse: false };
         }
     }
-    var errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;
-    var streaming = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) ||
+    const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;
+    const streaming = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status)) ||
         parsedResponse.request.streamResponseBody;
-    var initialErrorMessage = streaming
-        ? "Unexpected status code: " + parsedResponse.status
+    const initialErrorMessage = streaming
+        ? `Unexpected status code: ${parsedResponse.status}`
         : parsedResponse.bodyAsText;
-    var error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
+    const error = new RestError(initialErrorMessage, undefined, parsedResponse.status, parsedResponse.request, parsedResponse);
     // If the item failed but there's no error spec or default spec to deserialize the error,
     // we should fail so we just throw the parsed response
     if (!errorResponseSpec) {
         throw error;
     }
-    var defaultBodyMapper = errorResponseSpec.bodyMapper;
-    var defaultHeadersMapper = errorResponseSpec.headersMapper;
+    const defaultBodyMapper = errorResponseSpec.bodyMapper;
+    const defaultHeadersMapper = errorResponseSpec.headersMapper;
     try {
         // If error response has a body, try to deserialize it using default body mapper.
         // Then try to extract error code & message from it
         if (parsedResponse.parsedBody) {
-            var parsedBody = parsedResponse.parsedBody;
-            var parsedError = void 0;
+            const parsedBody = parsedResponse.parsedBody;
+            let parsedError;
             if (defaultBodyMapper) {
-                var valueToDeserialize = parsedBody;
+                let valueToDeserialize = parsedBody;
                 if (operationSpec.isXML && defaultBodyMapper.type.name === MapperType.Sequence) {
                     valueToDeserialize =
                         typeof parsedBody === "object" ? parsedBody[defaultBodyMapper.xmlElementName] : [];
                 }
                 parsedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, "error.response.parsedBody");
             }
-            var internalError = parsedBody.error || parsedError || parsedBody;
+            const internalError = parsedBody.error || parsedError || parsedBody;
             error.code = internalError.code;
             if (internalError.message) {
                 error.message = internalError.message;
@@ -22709,36 +22005,36 @@ function handleErrorResponse(parsedResponse, operationSpec, responseSpec) {
         }
     }
     catch (defaultError) {
-        error.message = "Error \"" + defaultError.message + "\" occurred in deserializing the responseBody - \"" + parsedResponse.bodyAsText + "\" for the default response.";
+        error.message = `Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`;
     }
-    return { error: error, shouldReturnResponse: false };
+    return { error, shouldReturnResponse: false };
 }
 function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts) {
     var _a;
-    var errorHandler = function (err) {
-        var msg = "Error \"" + err + "\" occurred while parsing the response body - " + operationResponse.bodyAsText + ".";
-        var errCode = err.code || RestError.PARSE_ERROR;
-        var e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);
+    const errorHandler = (err) => {
+        const msg = `Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;
+        const errCode = err.code || RestError.PARSE_ERROR;
+        const e = new RestError(msg, errCode, operationResponse.status, operationResponse.request, operationResponse);
         return Promise.reject(e);
     };
-    var streaming = ((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) ||
+    const streaming = ((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) ||
         operationResponse.request.streamResponseBody;
     if (!streaming && operationResponse.bodyAsText) {
-        var text_1 = operationResponse.bodyAsText;
-        var contentType = operationResponse.headers.get("Content-Type") || "";
-        var contentComponents = !contentType
+        const text = operationResponse.bodyAsText;
+        const contentType = operationResponse.headers.get("Content-Type") || "";
+        const contentComponents = !contentType
             ? []
-            : contentType.split(";").map(function (component) { return component.toLowerCase(); });
+            : contentType.split(";").map((component) => component.toLowerCase());
         if (contentComponents.length === 0 ||
-            contentComponents.some(function (component) { return jsonContentTypes.indexOf(component) !== -1; })) {
-            return new Promise(function (resolve) {
-                operationResponse.parsedBody = JSON.parse(text_1);
+            contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {
+            return new Promise((resolve) => {
+                operationResponse.parsedBody = JSON.parse(text);
                 resolve(operationResponse);
             }).catch(errorHandler);
         }
-        else if (contentComponents.some(function (component) { return xmlContentTypes.indexOf(component) !== -1; })) {
-            return parseXML(text_1, opts)
-                .then(function (body) {
+        else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {
+            return parseXML(text, opts)
+                .then((body) => {
                 operationResponse.parsedBody = body;
                 return operationResponse;
             })
@@ -22750,11 +22046,11 @@ function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts) {
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var DEFAULT_CLIENT_RETRY_COUNT = 3;
+const DEFAULT_CLIENT_RETRY_COUNT = 3;
 // intervals are in ms
-var DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;
-var DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;
-var DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;
+const DEFAULT_CLIENT_RETRY_INTERVAL = 1000 * 30;
+const DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 90;
+const DEFAULT_CLIENT_MIN_RETRY_INTERVAL = 1000 * 3;
 function isNumber(n) {
     return typeof n === "number";
 }
@@ -22781,8 +22077,7 @@ function shouldRetry(retryLimit, predicate, retryData, response, error) {
  * @param retryData -  The retry data.
  * @param err - The operation"s error, if any.
  */
-function updateRetryData(retryOptions, retryData, err) {
-    if (retryData === void 0) { retryData = { retryCount: 0, retryInterval: 0 }; }
+function updateRetryData(retryOptions, retryData = { retryCount: 0, retryInterval: 0 }, err) {
     if (err) {
         if (retryData.error) {
             err.innerError = retryData.error;
@@ -22792,18 +22087,72 @@ function updateRetryData(retryOptions, retryData, err) {
     // Adjust retry count
     retryData.retryCount++;
     // Adjust retry interval
-    var incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;
-    var boundedRandDelta = retryOptions.retryInterval * 0.8 +
+    let incrementDelta = Math.pow(2, retryData.retryCount - 1) - 1;
+    const boundedRandDelta = retryOptions.retryInterval * 0.8 +
         Math.floor(Math.random() * (retryOptions.retryInterval * 0.4));
     incrementDelta *= boundedRandDelta;
     retryData.retryInterval = Math.min(retryOptions.minRetryInterval + incrementDelta, retryOptions.maxRetryInterval);
     return retryData;
 }
 
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
+/**
+ * Helper TypeGuard that checks if the value is not null or undefined.
+ * @param thing - Anything
+ * @internal
+ */
+function isDefined(thing) {
+    return typeof thing !== "undefined" && thing !== null;
+}
+
+// Copyright (c) Microsoft Corporation.
+const StandardAbortMessage = "The operation was aborted.";
+/**
+ * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.
+ * @param delayInMs - The number of milliseconds to be delayed.
+ * @param value - The value to be resolved with after a timeout of t milliseconds.
+ * @param options - The options for delay - currently abort options
+ *   @param abortSignal - The abortSignal associated with containing operation.
+ *   @param abortErrorMsg - The abort error message associated with containing operation.
+ * @returns - Resolved promise
+ */
+function delay(delayInMs, value, options) {
+    return new Promise((resolve, reject) => {
+        let timer = undefined;
+        let onAborted = undefined;
+        const rejectOnAbort = () => {
+            return reject(new abortController.AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage));
+        };
+        const removeListeners = () => {
+            if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) {
+                options.abortSignal.removeEventListener("abort", onAborted);
+            }
+        };
+        onAborted = () => {
+            if (isDefined(timer)) {
+                clearTimeout(timer);
+            }
+            removeListeners();
+            return rejectOnAbort();
+        };
+        if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) {
+            return rejectOnAbort();
+        }
+        timer = setTimeout(() => {
+            removeListeners();
+            resolve(value);
+        }, delayInMs);
+        if (options === null || options === void 0 ? void 0 : options.abortSignal) {
+            options.abortSignal.addEventListener("abort", onAborted);
+        }
+    });
+}
+
 // Copyright (c) Microsoft Corporation.
 function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval);
         }
     };
@@ -22811,7 +22160,7 @@ function exponentialRetryPolicy(retryCount, retryInterval, maxRetryInterval) {
 (function (RetryMode) {
     RetryMode[RetryMode["Exponential"] = 0] = "Exponential";
 })(exports.RetryMode || (exports.RetryMode = {}));
-var DefaultRetryOptions = {
+const DefaultRetryOptions = {
     maxRetries: DEFAULT_CLIENT_RETRY_COUNT,
     retryDelayInMs: DEFAULT_CLIENT_RETRY_INTERVAL,
     maxRetryDelayInMs: DEFAULT_CLIENT_MAX_RETRY_INTERVAL
@@ -22819,8 +22168,7 @@ var DefaultRetryOptions = {
 /**
  * Instantiates a new "ExponentialRetryPolicyFilter" instance.
  */
-var ExponentialRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ExponentialRetryPolicy, _super);
+class ExponentialRetryPolicy extends BaseRequestPolicy {
     /**
      * @param nextPolicy - The next RequestPolicy in the pipeline chain.
      * @param options - The options for this RequestPolicy.
@@ -22829,217 +22177,188 @@ var ExponentialRetryPolicy = /** @class */ (function (_super) {
      * @param minRetryInterval - The minimum retry interval, in milliseconds.
      * @param maxRetryInterval - The maximum retry interval, in milliseconds.
      */
-    function ExponentialRetryPolicy(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
-        _this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
-        _this.maxRetryInterval = isNumber(maxRetryInterval)
+    constructor(nextPolicy, options, retryCount, retryInterval, maxRetryInterval) {
+        super(nextPolicy, options);
+        this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
+        this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
+        this.maxRetryInterval = isNumber(maxRetryInterval)
             ? maxRetryInterval
             : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
-        return _this;
     }
-    ExponentialRetryPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .then(function (response) { return retry(_this, request, response); })
-            .catch(function (error) { return retry(_this, request, error.response, undefined, error); });
-    };
-    return ExponentialRetryPolicy;
-}(BaseRequestPolicy));
-function retry(policy, request, response, retryData, requestError) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        function shouldPolicyRetry(responseParam) {
-            var statusCode = responseParam === null || responseParam === void 0 ? void 0 : responseParam.status;
-            if (statusCode === undefined ||
-                (statusCode < 500 && statusCode !== 408) ||
-                statusCode === 501 ||
-                statusCode === 505) {
-                return false;
-            }
-            return true;
+            .then((response) => retry(this, request, response))
+            .catch((error) => retry(this, request, error.response, undefined, error));
+    }
+}
+async function retry(policy, request, response, retryData, requestError) {
+    function shouldPolicyRetry(responseParam) {
+        const statusCode = responseParam === null || responseParam === void 0 ? void 0 : responseParam.status;
+        if (statusCode === 503 && (response === null || response === void 0 ? void 0 : response.headers.get(Constants.HeaderConstants.RETRY_AFTER))) {
+            return false;
         }
-        var isAborted, res, err_1, err;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    retryData = updateRetryData({
-                        retryInterval: policy.retryInterval,
-                        minRetryInterval: 0,
-                        maxRetryInterval: policy.maxRetryInterval
-                    }, retryData, requestError);
-                    isAborted = request.abortSignal && request.abortSignal.aborted;
-                    if (!(!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response))) return [3 /*break*/, 6];
-                    logger.info("Retrying request in " + retryData.retryInterval);
-                    _a.label = 1;
-                case 1:
-                    _a.trys.push([1, 4, , 5]);
-                    return [4 /*yield*/, delay(retryData.retryInterval)];
-                case 2:
-                    _a.sent();
-                    return [4 /*yield*/, policy._nextPolicy.sendRequest(request.clone())];
-                case 3:
-                    res = _a.sent();
-                    return [2 /*return*/, retry(policy, request, res, retryData)];
-                case 4:
-                    err_1 = _a.sent();
-                    return [2 /*return*/, retry(policy, request, response, retryData, err_1)];
-                case 5: return [3 /*break*/, 7];
-                case 6:
-                    if (isAborted || requestError || !response) {
-                        err = retryData.error ||
-                            new RestError("Failed to send the request.", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);
-                        throw err;
-                    }
-                    else {
-                        return [2 /*return*/, response];
-                    }
-                case 7: return [2 /*return*/];
-            }
-        });
-    });
+        if (statusCode === undefined ||
+            (statusCode < 500 && statusCode !== 408) ||
+            statusCode === 501 ||
+            statusCode === 505) {
+            return false;
+        }
+        return true;
+    }
+    retryData = updateRetryData({
+        retryInterval: policy.retryInterval,
+        minRetryInterval: 0,
+        maxRetryInterval: policy.maxRetryInterval
+    }, retryData, requestError);
+    const isAborted = request.abortSignal && request.abortSignal.aborted;
+    if (!isAborted && shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, response)) {
+        logger.info(`Retrying request in ${retryData.retryInterval}`);
+        try {
+            await delay(retryData.retryInterval);
+            const res = await policy._nextPolicy.sendRequest(request.clone());
+            return retry(policy, request, res, retryData);
+        }
+        catch (err) {
+            return retry(policy, request, response, retryData, err);
+        }
+    }
+    else if (isAborted || requestError || !response) {
+        // If the operation failed in the end, return all errors instead of just the last one
+        const err = retryData.error ||
+            new RestError("Failed to send the request.", RestError.REQUEST_SEND_ERROR, response && response.status, response && response.request, response);
+        throw err;
+    }
+    else {
+        return response;
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
-function generateClientRequestIdPolicy(requestIdHeaderName) {
-    if (requestIdHeaderName === void 0) { requestIdHeaderName = "x-ms-client-request-id"; }
+function generateClientRequestIdPolicy(requestIdHeaderName = "x-ms-client-request-id") {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new GenerateClientRequestIdPolicy(nextPolicy, options, requestIdHeaderName);
         }
     };
 }
-var GenerateClientRequestIdPolicy = /** @class */ (function (_super) {
-    tslib.__extends(GenerateClientRequestIdPolicy, _super);
-    function GenerateClientRequestIdPolicy(nextPolicy, options, _requestIdHeaderName) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._requestIdHeaderName = _requestIdHeaderName;
-        return _this;
+class GenerateClientRequestIdPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _requestIdHeaderName) {
+        super(nextPolicy, options);
+        this._requestIdHeaderName = _requestIdHeaderName;
     }
-    GenerateClientRequestIdPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         if (!request.headers.contains(this._requestIdHeaderName)) {
             request.headers.set(this._requestIdHeaderName, request.requestId);
         }
         return this._nextPolicy.sendRequest(request);
-    };
-    return GenerateClientRequestIdPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function getDefaultUserAgentKey() {
     return Constants.HeaderConstants.USER_AGENT;
 }
 function getPlatformSpecificData() {
-    var runtimeInfo = {
+    const runtimeInfo = {
         key: "Node",
         value: process.version
     };
-    var osInfo = {
+    const osInfo = {
         key: "OS",
-        value: "(" + os.arch() + "-" + os.type() + "-" + os.release() + ")"
+        value: `(${os.arch()}-${os.type()}-${os.release()})`
     };
     return [runtimeInfo, osInfo];
 }
 
 // Copyright (c) Microsoft Corporation.
 function getRuntimeInfo() {
-    var msRestRuntime = {
+    const msRestRuntime = {
         key: "core-http",
         value: Constants.coreHttpVersion
     };
     return [msRestRuntime];
 }
-function getUserAgentString(telemetryInfo, keySeparator, valueSeparator) {
-    if (keySeparator === void 0) { keySeparator = " "; }
-    if (valueSeparator === void 0) { valueSeparator = "/"; }
+function getUserAgentString(telemetryInfo, keySeparator = " ", valueSeparator = "/") {
     return telemetryInfo
-        .map(function (info) {
-        var value = info.value ? "" + valueSeparator + info.value : "";
-        return "" + info.key + value;
+        .map((info) => {
+        const value = info.value ? `${valueSeparator}${info.value}` : "";
+        return `${info.key}${value}`;
     })
         .join(keySeparator);
 }
-var getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
+const getDefaultUserAgentHeaderName = getDefaultUserAgentKey;
 function getDefaultUserAgentValue() {
-    var runtimeInfo = getRuntimeInfo();
-    var platformSpecificData = getPlatformSpecificData();
-    var userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
+    const runtimeInfo = getRuntimeInfo();
+    const platformSpecificData = getPlatformSpecificData();
+    const userAgent = getUserAgentString(runtimeInfo.concat(platformSpecificData));
     return userAgent;
 }
 function userAgentPolicy(userAgentData) {
-    var key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null
+    const key = !userAgentData || userAgentData.key === undefined || userAgentData.key === null
         ? getDefaultUserAgentKey()
         : userAgentData.key;
-    var value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null
+    const value = !userAgentData || userAgentData.value === undefined || userAgentData.value === null
         ? getDefaultUserAgentValue()
         : userAgentData.value;
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new UserAgentPolicy(nextPolicy, options, key, value);
         }
     };
 }
-var UserAgentPolicy = /** @class */ (function (_super) {
-    tslib.__extends(UserAgentPolicy, _super);
-    function UserAgentPolicy(_nextPolicy, _options, headerKey, headerValue) {
-        var _this = _super.call(this, _nextPolicy, _options) || this;
-        _this._nextPolicy = _nextPolicy;
-        _this._options = _options;
-        _this.headerKey = headerKey;
-        _this.headerValue = headerValue;
-        return _this;
+class UserAgentPolicy extends BaseRequestPolicy {
+    constructor(_nextPolicy, _options, headerKey, headerValue) {
+        super(_nextPolicy, _options);
+        this._nextPolicy = _nextPolicy;
+        this._options = _options;
+        this.headerKey = headerKey;
+        this.headerValue = headerValue;
     }
-    UserAgentPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         this.addUserAgentHeader(request);
         return this._nextPolicy.sendRequest(request);
-    };
-    UserAgentPolicy.prototype.addUserAgentHeader = function (request) {
+    }
+    addUserAgentHeader(request) {
         if (!request.headers) {
             request.headers = new HttpHeaders();
         }
         if (!request.headers.get(this.headerKey) && this.headerValue) {
             request.headers.set(this.headerKey, this.headerValue);
         }
-    };
-    return UserAgentPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Methods that are allowed to follow redirects 301 and 302
  */
-var allowedRedirect = ["GET", "HEAD"];
-var DefaultRedirectOptions = {
+const allowedRedirect = ["GET", "HEAD"];
+const DefaultRedirectOptions = {
     handleRedirects: true,
     maxRetries: 20
 };
-function redirectPolicy(maximumRetries) {
-    if (maximumRetries === void 0) { maximumRetries = 20; }
+function redirectPolicy(maximumRetries = 20) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new RedirectPolicy(nextPolicy, options, maximumRetries);
         }
     };
 }
-var RedirectPolicy = /** @class */ (function (_super) {
-    tslib.__extends(RedirectPolicy, _super);
-    function RedirectPolicy(nextPolicy, options, maxRetries) {
-        if (maxRetries === void 0) { maxRetries = 20; }
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.maxRetries = maxRetries;
-        return _this;
+class RedirectPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, maxRetries = 20) {
+        super(nextPolicy, options);
+        this.maxRetries = maxRetries;
     }
-    RedirectPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request)
-            .then(function (response) { return handleRedirect(_this, response, 0); });
-    };
-    return RedirectPolicy;
-}(BaseRequestPolicy));
+            .then((response) => handleRedirect(this, response, 0));
+    }
+}
 function handleRedirect(policy, response, currentRetries) {
-    var request = response.request, status = response.status;
-    var locationHeader = response.headers.get("location");
+    const { request, status } = response;
+    const locationHeader = response.headers.get("location");
     if (locationHeader &&
         (status === 300 ||
             (status === 301 && allowedRedirect.includes(request.method)) ||
@@ -23047,7 +22366,7 @@ function handleRedirect(policy, response, currentRetries) {
             (status === 303 && request.method === "POST") ||
             status === 307) &&
         (!policy.maxRetries || currentRetries < policy.maxRetries)) {
-        var builder = URLBuilder.parse(request.url);
+        const builder = URLBuilder.parse(request.url);
         builder.setPath(locationHeader);
         request.url = builder.toString();
         // POST request with Status code 303 should be converted into a
@@ -23058,47 +22377,41 @@ function handleRedirect(policy, response, currentRetries) {
         }
         return policy._nextPolicy
             .sendRequest(request)
-            .then(function (res) { return handleRedirect(policy, res, currentRetries + 1); });
+            .then((res) => handleRedirect(policy, res, currentRetries + 1));
     }
     return Promise.resolve(response);
 }
 
 // Copyright (c) Microsoft Corporation.
-function rpRegistrationPolicy(retryTimeout) {
-    if (retryTimeout === void 0) { retryTimeout = 30; }
+function rpRegistrationPolicy(retryTimeout = 30) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new RPRegistrationPolicy(nextPolicy, options, retryTimeout);
         }
     };
 }
-var RPRegistrationPolicy = /** @class */ (function (_super) {
-    tslib.__extends(RPRegistrationPolicy, _super);
-    function RPRegistrationPolicy(nextPolicy, options, _retryTimeout) {
-        if (_retryTimeout === void 0) { _retryTimeout = 30; }
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._retryTimeout = _retryTimeout;
-        return _this;
+class RPRegistrationPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _retryTimeout = 30) {
+        super(nextPolicy, options);
+        this._retryTimeout = _retryTimeout;
     }
-    RPRegistrationPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .then(function (response) { return registerIfNeeded(_this, request, response); });
-    };
-    return RPRegistrationPolicy;
-}(BaseRequestPolicy));
+            .then((response) => registerIfNeeded(this, request, response));
+    }
+}
 function registerIfNeeded(policy, request, response) {
     if (response.status === 409) {
-        var rpName = checkRPNotRegisteredError(response.bodyAsText);
+        const rpName = checkRPNotRegisteredError(response.bodyAsText);
         if (rpName) {
-            var urlPrefix = extractSubscriptionUrl(request.url);
+            const urlPrefix = extractSubscriptionUrl(request.url);
             return (registerRP(policy, urlPrefix, rpName, request)
                 // Autoregistration of ${provider} failed for some reason. We will not return this error
                 // instead will return the initial response with 409 status code back to the user.
                 // do nothing here as we are returning the original response at the end of this method.
-                .catch(function () { return false; })
-                .then(function (registrationStatus) {
+                .catch(() => false)
+                .then((registrationStatus) => {
                 if (registrationStatus) {
                     // Retry the original request. We have to change the x-ms-client-request-id
                     // otherwise Azure endpoint will return the initial 409 (cached) response.
@@ -23117,9 +22430,8 @@ function registerIfNeeded(policy, request, response) {
  * @param reuseUrlToo - Should the url from the original request be reused as well. Default false.
  * @returns A new request object with desired headers.
  */
-function getRequestEssentials(originalRequest, reuseUrlToo) {
-    if (reuseUrlToo === void 0) { reuseUrlToo = false; }
-    var reqOptions = originalRequest.clone();
+function getRequestEssentials(originalRequest, reuseUrlToo = false) {
+    const reqOptions = originalRequest.clone();
     if (reuseUrlToo) {
         reqOptions.url = originalRequest.url;
     }
@@ -23137,7 +22449,7 @@ function getRequestEssentials(originalRequest, reuseUrlToo) {
  * @returns The name of the RP if condition is satisfied else undefined.
  */
 function checkRPNotRegisteredError(body) {
-    var result, responseBody;
+    let result, responseBody;
     if (body) {
         try {
             responseBody = JSON.parse(body);
@@ -23150,7 +22462,7 @@ function checkRPNotRegisteredError(body) {
             responseBody.error.message &&
             responseBody.error.code &&
             responseBody.error.code === "MissingSubscriptionRegistration") {
-            var matchRes = responseBody.error.message.match(/.*'(.*)'/i);
+            const matchRes = responseBody.error.message.match(/.*'(.*)'/i);
             if (matchRes) {
                 result = matchRes.pop();
             }
@@ -23165,13 +22477,13 @@ function checkRPNotRegisteredError(body) {
  * @returns The url prefix as explained above.
  */
 function extractSubscriptionUrl(url) {
-    var result;
-    var matchRes = url.match(/.*\/subscriptions\/[a-f0-9-]+\//gi);
+    let result;
+    const matchRes = url.match(/.*\/subscriptions\/[a-f0-9-]+\//gi);
     if (matchRes && matchRes[0]) {
         result = matchRes[0];
     }
     else {
-        throw new Error("Unable to extract subscriptionId from the given url - " + url + ".");
+        throw new Error(`Unable to extract subscriptionId from the given url - ${url}.`);
     }
     return result;
 }
@@ -23182,20 +22494,18 @@ function extractSubscriptionUrl(url) {
  * @param provider - The provider name to be registered.
  * @param originalRequest - The original request sent by the user that returned a 409 response
  * with a message that the provider is not registered.
- * @param callback - The callback that handles the RP registration
  */
-function registerRP(policy, urlPrefix, provider, originalRequest) {
-    var postUrl = urlPrefix + "providers/" + provider + "/register?api-version=2016-02-01";
-    var getUrl = urlPrefix + "providers/" + provider + "?api-version=2016-02-01";
-    var reqOptions = getRequestEssentials(originalRequest);
+async function registerRP(policy, urlPrefix, provider, originalRequest) {
+    const postUrl = `${urlPrefix}providers/${provider}/register?api-version=2016-02-01`;
+    const getUrl = `${urlPrefix}providers/${provider}?api-version=2016-02-01`;
+    const reqOptions = getRequestEssentials(originalRequest);
     reqOptions.method = "POST";
     reqOptions.url = postUrl;
-    return policy._nextPolicy.sendRequest(reqOptions).then(function (response) {
-        if (response.status !== 200) {
-            throw new Error("Autoregistration of " + provider + " failed. Please try registering manually.");
-        }
-        return getRegistrationStatus(policy, getUrl, originalRequest);
-    });
+    const response = await policy._nextPolicy.sendRequest(reqOptions);
+    if (response.status !== 200) {
+        throw new Error(`Autoregistration of ${provider} failed. Please try registering manually.`);
+    }
+    return getRegistrationStatus(policy, getUrl, originalRequest);
 }
 /**
  * Polls the registration status of the provider that was registered. Polling happens at an interval of 30 seconds.
@@ -23206,25 +22516,24 @@ function registerRP(policy, urlPrefix, provider, originalRequest) {
  * with a message that the provider is not registered.
  * @returns True if RP Registration is successful.
  */
-function getRegistrationStatus(policy, url, originalRequest) {
-    var reqOptions = getRequestEssentials(originalRequest);
+async function getRegistrationStatus(policy, url, originalRequest) {
+    const reqOptions = getRequestEssentials(originalRequest);
     reqOptions.url = url;
     reqOptions.method = "GET";
-    return policy._nextPolicy.sendRequest(reqOptions).then(function (res) {
-        var obj = res.parsedBody;
-        if (res.parsedBody && obj.registrationState && obj.registrationState === "Registered") {
-            return true;
-        }
-        else {
-            return delay(policy._retryTimeout * 1000)
-                .then(function () { return getRegistrationStatus(policy, url, originalRequest); });
-        }
-    });
+    const res = await policy._nextPolicy.sendRequest(reqOptions);
+    const obj = res.parsedBody;
+    if (res.parsedBody && obj.registrationState && obj.registrationState === "Registered") {
+        return true;
+    }
+    else {
+        await delay(policy._retryTimeout * 1000);
+        return getRegistrationStatus(policy, url, originalRequest);
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
 // Default options for the cycler if none are provided
-var DEFAULT_CYCLER_OPTIONS = {
+const DEFAULT_CYCLER_OPTIONS = {
     forcedRefreshWindowInMs: 1000,
     retryIntervalInMs: 3000,
     refreshWindowInMs: 1000 * 60 * 2 // Start refreshing 2m before expiry
@@ -23242,59 +22551,33 @@ var DEFAULT_CYCLER_OPTIONS = {
  * throwing an exception
  * @returns - a promise that, if it resolves, will resolve with an access token
  */
-function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        // This wrapper handles exceptions gracefully as long as we haven't exceeded
-        // the timeout.
-        function tryGetAccessToken() {
-            return tslib.__awaiter(this, void 0, void 0, function () {
-                var _a, finalToken;
-                return tslib.__generator(this, function (_b) {
-                    switch (_b.label) {
-                        case 0:
-                            if (!(Date.now() < timeoutInMs)) return [3 /*break*/, 5];
-                            _b.label = 1;
-                        case 1:
-                            _b.trys.push([1, 3, , 4]);
-                            return [4 /*yield*/, getAccessToken()];
-                        case 2: return [2 /*return*/, _b.sent()];
-                        case 3:
-                            _a = _b.sent();
-                            return [2 /*return*/, null];
-                        case 4: return [3 /*break*/, 7];
-                        case 5: return [4 /*yield*/, getAccessToken()];
-                        case 6:
-                            finalToken = _b.sent();
-                            // Timeout is up, so throw if it's still null
-                            if (finalToken === null) {
-                                throw new Error("Failed to refresh access token.");
-                            }
-                            return [2 /*return*/, finalToken];
-                        case 7: return [2 /*return*/];
-                    }
-                });
-            });
-        }
-        var token;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0: return [4 /*yield*/, tryGetAccessToken()];
-                case 1:
-                    token = _a.sent();
-                    _a.label = 2;
-                case 2:
-                    if (!(token === null)) return [3 /*break*/, 5];
-                    return [4 /*yield*/, delay(retryIntervalInMs)];
-                case 3:
-                    _a.sent();
-                    return [4 /*yield*/, tryGetAccessToken()];
-                case 4:
-                    token = _a.sent();
-                    return [3 /*break*/, 2];
-                case 5: return [2 /*return*/, token];
+async function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {
+    // This wrapper handles exceptions gracefully as long as we haven't exceeded
+    // the timeout.
+    async function tryGetAccessToken() {
+        if (Date.now() < timeoutInMs) {
+            try {
+                return await getAccessToken();
             }
-        });
-    });
+            catch (_a) {
+                return null;
+            }
+        }
+        else {
+            const finalToken = await getAccessToken();
+            // Timeout is up, so throw if it's still null
+            if (finalToken === null) {
+                throw new Error("Failed to refresh access token.");
+            }
+            return finalToken;
+        }
+    }
+    let token = await tryGetAccessToken();
+    while (token === null) {
+        await delay(retryIntervalInMs);
+        token = await tryGetAccessToken();
+    }
+    return token;
 }
 /**
  * Creates a token cycler from a credential, scopes, and optional settings.
@@ -23312,15 +22595,14 @@ function beginRefresh(getAccessToken, retryIntervalInMs, timeoutInMs) {
  * @returns - a function that reliably produces a valid access token
  */
 function createTokenCycler(credential, scopes, tokenCyclerOptions) {
-    var _this = this;
-    var refreshWorker = null;
-    var token = null;
-    var options = tslib.__assign(tslib.__assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);
+    let refreshWorker = null;
+    let token = null;
+    const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);
     /**
      * This little holder defines several predicates that we use to construct
      * the rules of refreshing the token.
      */
-    var cycler = {
+    const cycler = {
         /**
          * Produces true if a refresh job is currently in progress.
          */
@@ -23352,20 +22634,18 @@ function createTokenCycler(credential, scopes, tokenCyclerOptions) {
         var _a;
         if (!cycler.isRefreshing) {
             // We bind `scopes` here to avoid passing it around a lot
-            var tryGetAccessToken = function () {
-                return credential.getToken(scopes, getTokenOptions);
-            };
+            const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);
             // Take advantage of promise chaining to insert an assignment to `token`
             // before the refresh can be considered done.
             refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, 
             // If we don't have a token, then we should timeout immediately
             (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())
-                .then(function (_token) {
+                .then((_token) => {
                 refreshWorker = null;
                 token = _token;
                 return token;
             })
-                .catch(function (reason) {
+                .catch((reason) => {
                 // We also should reset the refresher if we enter a failed state.  All
                 // existing awaiters will throw, but subsequent requests will start a
                 // new retry chain.
@@ -23376,25 +22656,23 @@ function createTokenCycler(credential, scopes, tokenCyclerOptions) {
         }
         return refreshWorker;
     }
-    return function (tokenOptions) { return tslib.__awaiter(_this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            //
-            // Simple rules:
-            // - If we MUST refresh, then return the refresh task, blocking
-            //   the pipeline until a token is available.
-            // - If we SHOULD refresh, then run refresh but don't return it
-            //   (we can still use the cached token).
-            // - Return the token, since it's fine if we didn't return in
-            //   step 1.
-            //
-            if (cycler.mustRefresh)
-                return [2 /*return*/, refresh(tokenOptions)];
-            if (cycler.shouldRefresh) {
-                refresh(tokenOptions);
-            }
-            return [2 /*return*/, token];
-        });
-    }); };
+    return async (tokenOptions) => {
+        //
+        // Simple rules:
+        // - If we MUST refresh, then return the refresh task, blocking
+        //   the pipeline until a token is available.
+        // - If we SHOULD refresh, then run refresh but don't return it
+        //   (we can still use the cached token).
+        // - Return the token, since it's fine if we didn't return in
+        //   step 1.
+        //
+        if (cycler.mustRefresh)
+            return refresh(tokenOptions);
+        if (cycler.shouldRefresh) {
+            refresh(tokenOptions);
+        }
+        return token;
+    };
 }
 // #endregion
 /**
@@ -23406,36 +22684,28 @@ function createTokenCycler(credential, scopes, tokenCyclerOptions) {
  */
 function bearerTokenAuthenticationPolicy(credential, scopes) {
     // This simple function encapsulates the entire process of reliably retrieving the token
-    var getToken = createTokenCycler(credential, scopes /* , options */);
-    var BearerTokenAuthenticationPolicy = /** @class */ (function (_super) {
-        tslib.__extends(BearerTokenAuthenticationPolicy, _super);
-        function BearerTokenAuthenticationPolicy(nextPolicy, options) {
-            return _super.call(this, nextPolicy, options) || this;
+    const getToken = createTokenCycler(credential, scopes /* , options */);
+    class BearerTokenAuthenticationPolicy extends BaseRequestPolicy {
+        constructor(nextPolicy, options) {
+            super(nextPolicy, options);
         }
-        BearerTokenAuthenticationPolicy.prototype.sendRequest = function (webResource) {
-            return tslib.__awaiter(this, void 0, void 0, function () {
-                var token;
-                return tslib.__generator(this, function (_a) {
-                    switch (_a.label) {
-                        case 0: return [4 /*yield*/, getToken({
-                                abortSignal: webResource.abortSignal,
-                                tracingOptions: {
-                                    spanOptions: webResource.spanOptions,
-                                    tracingContext: webResource.tracingContext
-                                }
-                            })];
-                        case 1:
-                            token = (_a.sent()).token;
-                            webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, "Bearer " + token);
-                            return [2 /*return*/, this._nextPolicy.sendRequest(webResource)];
-                    }
-                });
+        async sendRequest(webResource) {
+            if (!webResource.url.toLowerCase().startsWith("https://")) {
+                throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.");
+            }
+            const { token } = await getToken({
+                abortSignal: webResource.abortSignal,
+                tracingOptions: {
+                    spanOptions: webResource.spanOptions,
+                    tracingContext: webResource.tracingContext
+                }
             });
-        };
-        return BearerTokenAuthenticationPolicy;
-    }(BaseRequestPolicy));
+            webResource.headers.set(Constants.HeaderConstants.AUTHORIZATION, `Bearer ${token}`);
+            return this._nextPolicy.sendRequest(webResource);
+        }
+    }
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new BearerTokenAuthenticationPolicy(nextPolicy, options);
         }
     };
@@ -23444,7 +22714,7 @@ function bearerTokenAuthenticationPolicy(credential, scopes) {
 // Copyright (c) Microsoft Corporation.
 function systemErrorRetryPolicy(retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval);
         }
     };
@@ -23455,69 +22725,55 @@ function systemErrorRetryPolicy(retryCount, retryInterval, minRetryInterval, max
  * @param minRetryInterval - The minimum retry interval, in milliseconds.
  * @param maxRetryInterval - The maximum retry interval, in milliseconds.
  */
-var SystemErrorRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(SystemErrorRetryPolicy, _super);
-    function SystemErrorRetryPolicy(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
-        _this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
-        _this.minRetryInterval = isNumber(minRetryInterval)
+class SystemErrorRetryPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, retryCount, retryInterval, minRetryInterval, maxRetryInterval) {
+        super(nextPolicy, options);
+        this.retryCount = isNumber(retryCount) ? retryCount : DEFAULT_CLIENT_RETRY_COUNT;
+        this.retryInterval = isNumber(retryInterval) ? retryInterval : DEFAULT_CLIENT_RETRY_INTERVAL;
+        this.minRetryInterval = isNumber(minRetryInterval)
             ? minRetryInterval
             : DEFAULT_CLIENT_MIN_RETRY_INTERVAL;
-        _this.maxRetryInterval = isNumber(maxRetryInterval)
+        this.maxRetryInterval = isNumber(maxRetryInterval)
             ? maxRetryInterval
             : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;
-        return _this;
     }
-    SystemErrorRetryPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
+    sendRequest(request) {
         return this._nextPolicy
             .sendRequest(request.clone())
-            .catch(function (error) { return retry$1(_this, request, error.response, error); });
-    };
-    return SystemErrorRetryPolicy;
-}(BaseRequestPolicy));
-function retry$1(policy, request, operationResponse, err, retryData) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        function shouldPolicyRetry(_response, error) {
-            if (error &&
-                error.code &&
-                (error.code === "ETIMEDOUT" ||
-                    error.code === "ESOCKETTIMEDOUT" ||
-                    error.code === "ECONNREFUSED" ||
-                    error.code === "ECONNRESET" ||
-                    error.code === "ENOENT")) {
-                return true;
-            }
-            return false;
+            .catch((error) => retry$1(this, request, error.response, error));
+    }
+}
+async function retry$1(policy, request, operationResponse, err, retryData) {
+    retryData = updateRetryData(policy, retryData, err);
+    function shouldPolicyRetry(_response, error) {
+        if (error &&
+            error.code &&
+            (error.code === "ETIMEDOUT" ||
+                error.code === "ESOCKETTIMEDOUT" ||
+                error.code === "ECONNREFUSED" ||
+                error.code === "ECONNRESET" ||
+                error.code === "ENOENT")) {
+            return true;
         }
-        var nestedErr_1;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    retryData = updateRetryData(policy, retryData, err);
-                    if (!shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) return [3 /*break*/, 5];
-                    _a.label = 1;
-                case 1:
-                    _a.trys.push([1, 3, , 4]);
-                    return [4 /*yield*/, delay(retryData.retryInterval)];
-                case 2:
-                    _a.sent();
-                    return [2 /*return*/, policy._nextPolicy.sendRequest(request.clone())];
-                case 3:
-                    nestedErr_1 = _a.sent();
-                    return [2 /*return*/, retry$1(policy, request, operationResponse, nestedErr_1, retryData)];
-                case 4: return [3 /*break*/, 6];
-                case 5:
-                    if (err) {
-                        // If the operation failed in the end, return all errors instead of just the last one
-                        return [2 /*return*/, Promise.reject(retryData.error)];
-                    }
-                    return [2 /*return*/, operationResponse];
-                case 6: return [2 /*return*/];
-            }
-        });
-    });
+        return false;
+    }
+    if (shouldRetry(policy.retryCount, shouldPolicyRetry, retryData, operationResponse, err)) {
+        // If previous operation ended with an error and the policy allows a retry, do that
+        try {
+            await delay(retryData.retryInterval);
+            return policy._nextPolicy.sendRequest(request.clone());
+        }
+        catch (nestedErr) {
+            return retry$1(policy, request, operationResponse, nestedErr, retryData);
+        }
+    }
+    else {
+        if (err) {
+            // If the operation failed in the end, return all errors instead of just the last one
+            return Promise.reject(retryData.error);
+        }
+        return operationResponse;
+    }
 }
 
 // Copyright (c) Microsoft Corporation.
@@ -23531,34 +22787,37 @@ function retry$1(policy, request, operationResponse, err, retryData) {
 
 // Copyright (c) Microsoft Corporation.
 /**
+ * Stores the patterns specified in NO_PROXY environment variable.
  * @internal
  */
-var noProxyList = [];
-var noProxyListLoaded = false;
-var byPassedList = new Map();
+const globalNoProxyList = [];
+let noProxyListLoaded = false;
+/** A cache of whether a host should bypass the proxy. */
+const globalBypassedMap = new Map();
 function loadEnvironmentProxyValue() {
     if (!process) {
         return undefined;
     }
-    var httpsProxy = getEnvironmentValue(Constants.HTTPS_PROXY);
-    var allProxy = getEnvironmentValue(Constants.ALL_PROXY);
-    var httpProxy = getEnvironmentValue(Constants.HTTP_PROXY);
+    const httpsProxy = getEnvironmentValue(Constants.HTTPS_PROXY);
+    const allProxy = getEnvironmentValue(Constants.ALL_PROXY);
+    const httpProxy = getEnvironmentValue(Constants.HTTP_PROXY);
     return httpsProxy || allProxy || httpProxy;
 }
-// Check whether the host of a given `uri` is in the noProxyList.
-// If there's a match, any request sent to the same host won't have the proxy settings set.
-// This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210
-function isBypassed(uri) {
+/**
+ * Check whether the host of a given `uri` matches any pattern in the no proxy list.
+ * If there's a match, any request sent to the same host shouldn't have the proxy settings set.
+ * This implementation is a port of https://github.com/Azure/azure-sdk-for-net/blob/8cca811371159e527159c7eb65602477898683e2/sdk/core/Azure.Core/src/Pipeline/Internal/HttpEnvironmentProxy.cs#L210
+ */
+function isBypassed(uri, noProxyList, bypassedMap) {
     if (noProxyList.length === 0) {
         return false;
     }
-    var host = URLBuilder.parse(uri).getHost();
-    if (byPassedList.has(host)) {
-        return byPassedList.get(host);
+    const host = URLBuilder.parse(uri).getHost();
+    if (bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.has(host)) {
+        return bypassedMap.get(host);
     }
-    var isBypassedFlag = false;
-    for (var _i = 0, noProxyList_1 = noProxyList; _i < noProxyList_1.length; _i++) {
-        var pattern = noProxyList_1[_i];
+    let isBypassedFlag = false;
+    for (const pattern of noProxyList) {
         if (pattern[0] === ".") {
             // This should match either domain it self or any subdomain or host
             // .foo.com will match foo.com it self or *.foo.com
@@ -23577,20 +22836,20 @@ function isBypassed(uri) {
             }
         }
     }
-    byPassedList.set(host, isBypassedFlag);
+    bypassedMap === null || bypassedMap === void 0 ? void 0 : bypassedMap.set(host, isBypassedFlag);
     return isBypassedFlag;
 }
 /**
  * @internal
  */
 function loadNoProxy() {
-    var noProxy = getEnvironmentValue(Constants.NO_PROXY);
+    const noProxy = getEnvironmentValue(Constants.NO_PROXY);
     noProxyListLoaded = true;
     if (noProxy) {
         return noProxy
             .split(",")
-            .map(function (item) { return item.trim(); })
-            .filter(function (item) { return item.length; });
+            .map((item) => item.trim())
+            .filter((item) => item.length);
     }
     return [];
 }
@@ -23601,174 +22860,184 @@ function getDefaultProxySettings(proxyUrl) {
             return undefined;
         }
     }
-    var _a = extractAuthFromUrl(proxyUrl), username = _a.username, password = _a.password, urlWithoutAuth = _a.urlWithoutAuth;
-    var parsedUrl = URLBuilder.parse(urlWithoutAuth);
-    var schema = parsedUrl.getScheme() ? parsedUrl.getScheme() + "://" : "";
+    const { username, password, urlWithoutAuth } = extractAuthFromUrl(proxyUrl);
+    const parsedUrl = URLBuilder.parse(urlWithoutAuth);
+    const schema = parsedUrl.getScheme() ? parsedUrl.getScheme() + "://" : "";
     return {
         host: schema + parsedUrl.getHost(),
         port: Number.parseInt(parsedUrl.getPort() || "80"),
-        username: username,
-        password: password
+        username,
+        password
     };
 }
-function proxyPolicy(proxySettings) {
+/**
+ * A policy that allows one to apply proxy settings to all requests.
+ * If not passed static settings, they will be retrieved from the HTTPS_PROXY
+ * or HTTP_PROXY environment variables.
+ * @param proxySettings - ProxySettings to use on each request.
+ * @param options - additional settings, for example, custom NO_PROXY patterns
+ */
+function proxyPolicy(proxySettings, options) {
     if (!proxySettings) {
         proxySettings = getDefaultProxySettings();
     }
     if (!noProxyListLoaded) {
-        noProxyList.push.apply(noProxyList, loadNoProxy());
+        globalNoProxyList.push(...loadNoProxy());
     }
     return {
-        create: function (nextPolicy, options) {
-            return new ProxyPolicy(nextPolicy, options, proxySettings);
+        create: (nextPolicy, requestPolicyOptions) => {
+            return new ProxyPolicy(nextPolicy, requestPolicyOptions, proxySettings, options === null || options === void 0 ? void 0 : options.customNoProxyList);
         }
     };
 }
 function extractAuthFromUrl(url) {
-    var atIndex = url.indexOf("@");
+    const atIndex = url.indexOf("@");
     if (atIndex === -1) {
         return { urlWithoutAuth: url };
     }
-    var schemeIndex = url.indexOf("://");
-    var authStart = schemeIndex !== -1 ? schemeIndex + 3 : 0;
-    var auth = url.substring(authStart, atIndex);
-    var colonIndex = auth.indexOf(":");
-    var hasPassword = colonIndex !== -1;
-    var username = hasPassword ? auth.substring(0, colonIndex) : auth;
-    var password = hasPassword ? auth.substring(colonIndex + 1) : undefined;
-    var urlWithoutAuth = url.substring(0, authStart) + url.substring(atIndex + 1);
+    const schemeIndex = url.indexOf("://");
+    const authStart = schemeIndex !== -1 ? schemeIndex + 3 : 0;
+    const auth = url.substring(authStart, atIndex);
+    const colonIndex = auth.indexOf(":");
+    const hasPassword = colonIndex !== -1;
+    const username = hasPassword ? auth.substring(0, colonIndex) : auth;
+    const password = hasPassword ? auth.substring(colonIndex + 1) : undefined;
+    const urlWithoutAuth = url.substring(0, authStart) + url.substring(atIndex + 1);
     return {
-        username: username,
-        password: password,
-        urlWithoutAuth: urlWithoutAuth
+        username,
+        password,
+        urlWithoutAuth
     };
 }
-var ProxyPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ProxyPolicy, _super);
-    function ProxyPolicy(nextPolicy, options, proxySettings) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.proxySettings = proxySettings;
-        return _this;
+class ProxyPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, proxySettings, customNoProxyList) {
+        super(nextPolicy, options);
+        this.proxySettings = proxySettings;
+        this.customNoProxyList = customNoProxyList;
     }
-    ProxyPolicy.prototype.sendRequest = function (request) {
-        if (!request.proxySettings && !isBypassed(request.url)) {
+    sendRequest(request) {
+        var _a;
+        if (!request.proxySettings &&
+            !isBypassed(request.url, (_a = this.customNoProxyList) !== null && _a !== void 0 ? _a : globalNoProxyList, this.customNoProxyList ? undefined : globalBypassedMap)) {
             request.proxySettings = this.proxySettings;
         }
         return this._nextPolicy.sendRequest(request);
-    };
-    return ProxyPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var StatusCodes = Constants.HttpConstants.StatusCodes;
+// Licensed under the MIT license.
+/**
+ * Maximum number of retries for the throttling retry policy
+ */
+const DEFAULT_CLIENT_MAX_RETRY_COUNT = 3;
+
+// Copyright (c) Microsoft Corporation.
+const StatusCodes = Constants.HttpConstants.StatusCodes;
 function throttlingRetryPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new ThrottlingRetryPolicy(nextPolicy, options);
         }
     };
 }
+const StandardAbortMessage$1 = "The operation was aborted.";
 /**
  * To learn more, please refer to
  * https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-request-limits,
  * https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits and
  * https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshooting-throttling-errors
  */
-var ThrottlingRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(ThrottlingRetryPolicy, _super);
-    function ThrottlingRetryPolicy(nextPolicy, options, _handleResponse) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this._handleResponse = _handleResponse || _this._defaultResponseHandler;
-        return _this;
+class ThrottlingRetryPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, _handleResponse) {
+        super(nextPolicy, options);
+        this.numberOfRetries = 0;
+        this._handleResponse = _handleResponse || this._defaultResponseHandler;
     }
-    ThrottlingRetryPolicy.prototype.sendRequest = function (httpRequest) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this._nextPolicy.sendRequest(httpRequest.clone()).then(function (response) {
-                        if (response.status !== StatusCodes.TooManyRequests) {
-                            return response;
-                        }
-                        else {
-                            return _this._handleResponse(httpRequest, response);
-                        }
-                    })];
-            });
-        });
-    };
-    ThrottlingRetryPolicy.prototype._defaultResponseHandler = function (httpRequest, httpResponse) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var retryAfterHeader, delayInMs;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);
-                if (retryAfterHeader) {
-                    delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);
-                    if (delayInMs) {
-                        return [2 /*return*/, delay(delayInMs).then(function (_) { return _this._nextPolicy.sendRequest(httpRequest); })];
-                    }
+    async sendRequest(httpRequest) {
+        const response = await this._nextPolicy.sendRequest(httpRequest.clone());
+        if (response.status !== StatusCodes.TooManyRequests &&
+            response.status !== StatusCodes.ServiceUnavailable) {
+            return response;
+        }
+        else {
+            return this._handleResponse(httpRequest, response);
+        }
+    }
+    async _defaultResponseHandler(httpRequest, httpResponse) {
+        var _a;
+        const retryAfterHeader = httpResponse.headers.get(Constants.HeaderConstants.RETRY_AFTER);
+        if (retryAfterHeader) {
+            const delayInMs = ThrottlingRetryPolicy.parseRetryAfterHeader(retryAfterHeader);
+            if (delayInMs) {
+                this.numberOfRetries += 1;
+                await delay(delayInMs, undefined, {
+                    abortSignal: httpRequest.abortSignal,
+                    abortErrorMsg: StandardAbortMessage$1
+                });
+                if ((_a = httpRequest.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
+                    throw new abortController.AbortError(StandardAbortMessage$1);
                 }
-                return [2 /*return*/, httpResponse];
-            });
-        });
-    };
-    ThrottlingRetryPolicy.parseRetryAfterHeader = function (headerValue) {
-        var retryAfterInSeconds = Number(headerValue);
+                if (this.numberOfRetries < DEFAULT_CLIENT_MAX_RETRY_COUNT) {
+                    return this.sendRequest(httpRequest);
+                }
+                else {
+                    return this._nextPolicy.sendRequest(httpRequest);
+                }
+            }
+        }
+        return httpResponse;
+    }
+    static parseRetryAfterHeader(headerValue) {
+        const retryAfterInSeconds = Number(headerValue);
         if (Number.isNaN(retryAfterInSeconds)) {
             return ThrottlingRetryPolicy.parseDateRetryAfterHeader(headerValue);
         }
         else {
             return retryAfterInSeconds * 1000;
         }
-    };
-    ThrottlingRetryPolicy.parseDateRetryAfterHeader = function (headerValue) {
+    }
+    static parseDateRetryAfterHeader(headerValue) {
         try {
-            var now = Date.now();
-            var date = Date.parse(headerValue);
-            var diff = date - now;
+            const now = Date.now();
+            const date = Date.parse(headerValue);
+            const diff = date - now;
             return Number.isNaN(diff) ? undefined : diff;
         }
         catch (error) {
             return undefined;
         }
-    };
-    return ThrottlingRetryPolicy;
-}(BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function signingPolicy(authenticationProvider) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new SigningPolicy(nextPolicy, options, authenticationProvider);
         }
     };
 }
-var SigningPolicy = /** @class */ (function (_super) {
-    tslib.__extends(SigningPolicy, _super);
-    function SigningPolicy(nextPolicy, options, authenticationProvider) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.authenticationProvider = authenticationProvider;
-        return _this;
+class SigningPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, authenticationProvider) {
+        super(nextPolicy, options);
+        this.authenticationProvider = authenticationProvider;
     }
-    SigningPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         return this.authenticationProvider.signRequest(request);
-    };
-    SigningPolicy.prototype.sendRequest = function (request) {
-        var _this = this;
-        return this.signRequest(request).then(function (nextRequest) {
-            return _this._nextPolicy.sendRequest(nextRequest);
-        });
-    };
-    return SigningPolicy;
-}(BaseRequestPolicy));
+    }
+    sendRequest(request) {
+        return this.signRequest(request).then((nextRequest) => this._nextPolicy.sendRequest(nextRequest));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var DefaultKeepAliveOptions = {
+const DefaultKeepAliveOptions = {
     enable: true
 };
 function keepAlivePolicy(keepAliveOptions) {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new KeepAlivePolicy(nextPolicy, options, keepAliveOptions || DefaultKeepAliveOptions);
         }
     };
@@ -23776,8 +23045,7 @@ function keepAlivePolicy(keepAliveOptions) {
 /**
  * KeepAlivePolicy is a policy used to control keep alive settings for every request.
  */
-var KeepAlivePolicy = /** @class */ (function (_super) {
-    tslib.__extends(KeepAlivePolicy, _super);
+class KeepAlivePolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of KeepAlivePolicy.
      *
@@ -23785,10 +23053,9 @@ var KeepAlivePolicy = /** @class */ (function (_super) {
      * @param options -
      * @param keepAliveOptions -
      */
-    function KeepAlivePolicy(nextPolicy, options, keepAliveOptions) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.keepAliveOptions = keepAliveOptions;
-        return _this;
+    constructor(nextPolicy, options, keepAliveOptions) {
+        super(nextPolicy, options);
+        this.keepAliveOptions = keepAliveOptions;
     }
     /**
      * Sends out request.
@@ -23796,104 +23063,85 @@ var KeepAlivePolicy = /** @class */ (function (_super) {
      * @param request -
      * @returns
      */
-    KeepAlivePolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                request.keepAlive = this.keepAliveOptions.enable;
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return KeepAlivePolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        request.keepAlive = this.keepAliveOptions.enable;
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var createSpan = coreTracing.createSpanFunction({
+const createSpan = coreTracing.createSpanFunction({
     packagePrefix: "",
     namespace: ""
 });
-function tracingPolicy(tracingOptions) {
-    if (tracingOptions === void 0) { tracingOptions = {}; }
+function tracingPolicy(tracingOptions = {}) {
     return {
-        create: function (nextPolicy, options) {
+        create(nextPolicy, options) {
             return new TracingPolicy(nextPolicy, options, tracingOptions);
         }
     };
 }
-var TracingPolicy = /** @class */ (function (_super) {
-    tslib.__extends(TracingPolicy, _super);
-    function TracingPolicy(nextPolicy, options, tracingOptions) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.userAgent = tracingOptions.userAgent;
-        return _this;
+class TracingPolicy extends BaseRequestPolicy {
+    constructor(nextPolicy, options, tracingOptions) {
+        super(nextPolicy, options);
+        this.userAgent = tracingOptions.userAgent;
     }
-    TracingPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var path, span, spanContext, traceParentHeader, traceState, response, serviceRequestId, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!request.tracingContext) {
-                            return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-                        }
-                        path = URLBuilder.parse(request.url).getPath() || "/";
-                        span = createSpan(path, {
-                            tracingOptions: {
-                                spanOptions: tslib.__assign(tslib.__assign({}, request.spanOptions), { kind: coreTracing.SpanKind.CLIENT }),
-                                tracingContext: request.tracingContext
-                            }
-                        }).span;
-                        span.setAttributes({
-                            "http.method": request.method,
-                            "http.url": request.url,
-                            requestId: request.requestId
-                        });
-                        if (this.userAgent) {
-                            span.setAttribute("http.user_agent", this.userAgent);
-                        }
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, 4, 5]);
-                        spanContext = span.context();
-                        traceParentHeader = coreTracing.getTraceParentHeader(spanContext);
-                        if (traceParentHeader) {
-                            request.headers.set("traceparent", traceParentHeader);
-                            traceState = spanContext.traceState && spanContext.traceState.serialize();
-                            // if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent
-                            if (traceState) {
-                                request.headers.set("tracestate", traceState);
-                            }
-                        }
-                        return [4 /*yield*/, this._nextPolicy.sendRequest(request)];
-                    case 2:
-                        response = _a.sent();
-                        span.setAttribute("http.status_code", response.status);
-                        serviceRequestId = response.headers.get("x-ms-request-id");
-                        if (serviceRequestId) {
-                            span.setAttribute("serviceRequestId", serviceRequestId);
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.OK
-                        });
-                        return [2 /*return*/, response];
-                    case 3:
-                        err_1 = _a.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: err_1.message
-                        });
-                        span.setAttribute("http.status_code", err_1.statusCode);
-                        throw err_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
-            });
+    async sendRequest(request) {
+        if (!request.tracingContext) {
+            return this._nextPolicy.sendRequest(request);
+        }
+        // create a new span
+        const path = URLBuilder.parse(request.url).getPath() || "/";
+        const { span } = createSpan(path, {
+            tracingOptions: {
+                spanOptions: Object.assign(Object.assign({}, request.spanOptions), { kind: coreTracing.SpanKind.CLIENT }),
+                tracingContext: request.tracingContext
+            }
         });
-    };
-    return TracingPolicy;
-}(BaseRequestPolicy));
+        span.setAttributes({
+            "http.method": request.method,
+            "http.url": request.url,
+            requestId: request.requestId
+        });
+        if (this.userAgent) {
+            span.setAttribute("http.user_agent", this.userAgent);
+        }
+        try {
+            // set headers
+            const spanContext = span.spanContext();
+            const traceParentHeader = coreTracing.getTraceParentHeader(spanContext);
+            if (traceParentHeader && coreTracing.isSpanContextValid(spanContext)) {
+                request.headers.set("traceparent", traceParentHeader);
+                const traceState = spanContext.traceState && spanContext.traceState.serialize();
+                // if tracestate is set, traceparent MUST be set, so only set tracestate after traceparent
+                if (traceState) {
+                    request.headers.set("tracestate", traceState);
+                }
+            }
+            const response = await this._nextPolicy.sendRequest(request);
+            span.setAttribute("http.status_code", response.status);
+            const serviceRequestId = response.headers.get("x-ms-request-id");
+            if (serviceRequestId) {
+                span.setAttribute("serviceRequestId", serviceRequestId);
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.OK
+            });
+            return response;
+        }
+        catch (err) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: err.message
+            });
+            span.setAttribute("http.status_code", err.statusCode);
+            throw err;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -23902,7 +23150,7 @@ var TracingPolicy = /** @class */ (function (_super) {
  */
 function disableResponseDecompressionPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new DisableResponseDecompressionPolicy(nextPolicy, options);
         }
     };
@@ -23911,8 +23159,7 @@ function disableResponseDecompressionPolicy() {
  * A policy to disable response decompression according to Accept-Encoding header
  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
  */
-var DisableResponseDecompressionPolicy = /** @class */ (function (_super) {
-    tslib.__extends(DisableResponseDecompressionPolicy, _super);
+class DisableResponseDecompressionPolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of DisableResponseDecompressionPolicy.
      *
@@ -23921,8 +23168,8 @@ var DisableResponseDecompressionPolicy = /** @class */ (function (_super) {
      */
     // The parent constructor is protected.
     /* eslint-disable-next-line @typescript-eslint/no-useless-constructor */
-    function DisableResponseDecompressionPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends out request.
@@ -23930,21 +23177,16 @@ var DisableResponseDecompressionPolicy = /** @class */ (function (_super) {
      * @param request -
      * @returns
      */
-    DisableResponseDecompressionPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                request.decompressResponse = false;
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return DisableResponseDecompressionPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        request.decompressResponse = false;
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function ndJsonPolicy() {
     return {
-        create: function (nextPolicy, options) {
+        create: (nextPolicy, options) => {
             return new NdJsonPolicy(nextPolicy, options);
         }
     };
@@ -23952,37 +23194,30 @@ function ndJsonPolicy() {
 /**
  * NdJsonPolicy that formats a JSON array as newline-delimited JSON
  */
-var NdJsonPolicy = /** @class */ (function (_super) {
-    tslib.__extends(NdJsonPolicy, _super);
+class NdJsonPolicy extends BaseRequestPolicy {
     /**
      * Creates an instance of KeepAlivePolicy.
      */
-    function NdJsonPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends a request.
      */
-    NdJsonPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var body;
-            return tslib.__generator(this, function (_a) {
-                // There currently isn't a good way to bypass the serializer
-                if (typeof request.body === "string" && request.body.startsWith("[")) {
-                    body = JSON.parse(request.body);
-                    if (Array.isArray(body)) {
-                        request.body = body.map(function (item) { return JSON.stringify(item) + "\n"; }).join("");
-                    }
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return NdJsonPolicy;
-}(BaseRequestPolicy));
+    async sendRequest(request) {
+        // There currently isn't a good way to bypass the serializer
+        if (typeof request.body === "string" && request.body.startsWith("[")) {
+            const body = JSON.parse(request.body);
+            if (Array.isArray(body)) {
+                request.body = body.map((item) => JSON.stringify(item) + "\n").join("");
+            }
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var cachedHttpClient;
+let cachedHttpClient;
 function getCachedDefaultHttpClient() {
     if (!cachedHttpClient) {
         cachedHttpClient = new NodeFetchHttpClient();
@@ -23994,29 +23229,28 @@ function getCachedDefaultHttpClient() {
 /**
  * ServiceClient sends service requests and receives responses.
  */
-var ServiceClient = /** @class */ (function () {
+class ServiceClient {
     /**
      * The ServiceClient constructor
      * @param credentials - The credentials used for authentication with the service.
      * @param options - The service client options that govern the behavior of the client.
      */
-    function ServiceClient(credentials, 
+    constructor(credentials, 
     /* eslint-disable-next-line @azure/azure-sdk/ts-naming-options */
     options) {
-        var _this = this;
         if (!options) {
             options = {};
         }
         this._withCredentials = options.withCredentials || false;
         this._httpClient = options.httpClient || getCachedDefaultHttpClient();
         this._requestPolicyOptions = new RequestPolicyOptions(options.httpPipelineLogger);
-        var requestPolicyFactories;
+        let requestPolicyFactories;
         if (Array.isArray(options.requestPolicyFactories)) {
             logger.info("ServiceClient: using custom request policies");
             requestPolicyFactories = options.requestPolicyFactories;
         }
         else {
-            var authPolicyFactory = undefined;
+            let authPolicyFactory = undefined;
             if (coreAuth.isTokenCredential(credentials)) {
                 logger.info("ServiceClient: creating bearer token authentication policy from provided credentials");
                 // Create a wrapped RequestPolicyFactory here so that we can provide the
@@ -24025,16 +23259,16 @@ var ServiceClient = /** @class */ (function () {
                 // implementations do not set baseUri until after ServiceClient's constructor
                 // is finished, leaving baseUri empty at the time when it is needed to
                 // build the correct scope name.
-                var wrappedPolicyFactory = function () {
-                    var bearerTokenPolicyFactory = undefined;
+                const wrappedPolicyFactory = () => {
+                    let bearerTokenPolicyFactory = undefined;
                     // eslint-disable-next-line @typescript-eslint/no-this-alias
-                    var serviceClient = _this;
-                    var serviceClientOptions = options;
+                    const serviceClient = this;
+                    const serviceClientOptions = options;
                     return {
-                        create: function (nextPolicy, createOptions) {
-                            var credentialScopes = getCredentialScopes(serviceClientOptions, serviceClient.baseUri);
+                        create(nextPolicy, createOptions) {
+                            const credentialScopes = getCredentialScopes(serviceClientOptions, serviceClient.baseUri);
                             if (!credentialScopes) {
-                                throw new Error("When using credential, the ServiceClient must contain a baseUri or a credentialScopes in ServiceClientOptions. Unable to create a bearerTokenAuthenticationPolicy");
+                                throw new Error(`When using credential, the ServiceClient must contain a baseUri or a credentialScopes in ServiceClientOptions. Unable to create a bearerTokenAuthenticationPolicy`);
                             }
                             if (bearerTokenPolicyFactory === undefined || bearerTokenPolicyFactory === null) {
                                 bearerTokenPolicyFactory = bearerTokenAuthenticationPolicy(credentials, credentialScopes);
@@ -24057,7 +23291,7 @@ var ServiceClient = /** @class */ (function () {
             if (options.requestPolicyFactories) {
                 // options.requestPolicyFactories can also be a function that manipulates
                 // the default requestPolicyFactories array
-                var newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);
+                const newRequestPolicyFactories = options.requestPolicyFactories(requestPolicyFactories);
                 if (newRequestPolicyFactories) {
                     requestPolicyFactories = newRequestPolicyFactories;
                 }
@@ -24068,11 +23302,11 @@ var ServiceClient = /** @class */ (function () {
     /**
      * Send the provided httpRequest.
      */
-    ServiceClient.prototype.sendRequest = function (options) {
+    sendRequest(options) {
         if (options === null || options === undefined || typeof options !== "object") {
             throw new Error("options cannot be null or undefined and it must be of type object.");
         }
-        var httpRequest;
+        let httpRequest;
         try {
             if (isWebResourceLike(options)) {
                 options.validateRequestProperties();
@@ -24086,242 +23320,220 @@ var ServiceClient = /** @class */ (function () {
         catch (error) {
             return Promise.reject(error);
         }
-        var httpPipeline = this._httpClient;
+        let httpPipeline = this._httpClient;
         if (this._requestPolicyFactories && this._requestPolicyFactories.length > 0) {
-            for (var i = this._requestPolicyFactories.length - 1; i >= 0; --i) {
+            for (let i = this._requestPolicyFactories.length - 1; i >= 0; --i) {
                 httpPipeline = this._requestPolicyFactories[i].create(httpPipeline, this._requestPolicyOptions);
             }
         }
         return httpPipeline.sendRequest(httpRequest);
-    };
+    }
     /**
      * Send an HTTP request that is populated using the provided OperationSpec.
      * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.
      * @param operationSpec - The OperationSpec to use to populate the httpRequest.
      * @param callback - The callback to call when the response is received.
      */
-    ServiceClient.prototype.sendOperationRequest = function (operationArguments, operationSpec, callback) {
+    async sendOperationRequest(operationArguments, operationSpec, callback) {
         var _a;
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var serializerOptions, httpRequest, result, baseUri, requestUrl, _i, _b, urlParameter, urlParameterValue, _c, _d, queryParameter, queryParameterValue, index, item, index, contentType, _e, _f, headerParameter, headerValue, headerCollectionPrefix, _g, _h, key, options, customHeaderName, rawResponse, sendRequestError, error_1, error_2, cb;
-            return tslib.__generator(this, function (_j) {
-                switch (_j.label) {
-                    case 0:
-                        if (typeof operationArguments.options === "function") {
-                            callback = operationArguments.options;
-                            operationArguments.options = undefined;
-                        }
-                        serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
-                        httpRequest = new WebResource();
-                        _j.label = 1;
-                    case 1:
-                        _j.trys.push([1, 6, , 7]);
-                        baseUri = operationSpec.baseUrl || this.baseUri;
-                        if (!baseUri) {
-                            throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");
-                        }
-                        httpRequest.method = operationSpec.httpMethod;
-                        httpRequest.operationSpec = operationSpec;
-                        requestUrl = URLBuilder.parse(baseUri);
-                        if (operationSpec.path) {
-                            requestUrl.appendPath(operationSpec.path);
-                        }
-                        if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {
-                            for (_i = 0, _b = operationSpec.urlParameters; _i < _b.length; _i++) {
-                                urlParameter = _b[_i];
-                                urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);
-                                urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter), serializerOptions);
-                                if (!urlParameter.skipEncoding) {
-                                    urlParameterValue = encodeURIComponent(urlParameterValue);
+        if (typeof operationArguments.options === "function") {
+            callback = operationArguments.options;
+            operationArguments.options = undefined;
+        }
+        const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
+        const httpRequest = new WebResource();
+        let result;
+        try {
+            const baseUri = operationSpec.baseUrl || this.baseUri;
+            if (!baseUri) {
+                throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a baseUri string property that contains the base URL to use.");
+            }
+            httpRequest.method = operationSpec.httpMethod;
+            httpRequest.operationSpec = operationSpec;
+            const requestUrl = URLBuilder.parse(baseUri);
+            if (operationSpec.path) {
+                requestUrl.appendPath(operationSpec.path);
+            }
+            if (operationSpec.urlParameters && operationSpec.urlParameters.length > 0) {
+                for (const urlParameter of operationSpec.urlParameters) {
+                    let urlParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, urlParameter, operationSpec.serializer);
+                    urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, getPathStringFromParameter(urlParameter), serializerOptions);
+                    if (!urlParameter.skipEncoding) {
+                        urlParameterValue = encodeURIComponent(urlParameterValue);
+                    }
+                    requestUrl.replaceAll(`{${urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)}}`, urlParameterValue);
+                }
+            }
+            if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {
+                for (const queryParameter of operationSpec.queryParameters) {
+                    let queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);
+                    if (queryParameterValue !== undefined && queryParameterValue !== null) {
+                        queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter), serializerOptions);
+                        if (queryParameter.collectionFormat !== undefined &&
+                            queryParameter.collectionFormat !== null) {
+                            if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Multi) {
+                                if (queryParameterValue.length === 0) {
+                                    // The collection is empty, no need to try serializing the current queryParam
+                                    continue;
                                 }
-                                requestUrl.replaceAll("{" + (urlParameter.mapper.serializedName || getPathStringFromParameter(urlParameter)) + "}", urlParameterValue);
-                            }
-                        }
-                        if (operationSpec.queryParameters && operationSpec.queryParameters.length > 0) {
-                            for (_c = 0, _d = operationSpec.queryParameters; _c < _d.length; _c++) {
-                                queryParameter = _d[_c];
-                                queryParameterValue = getOperationArgumentValueFromParameter(this, operationArguments, queryParameter, operationSpec.serializer);
-                                if (queryParameterValue !== undefined && queryParameterValue !== null) {
-                                    queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter), serializerOptions);
-                                    if (queryParameter.collectionFormat !== undefined &&
-                                        queryParameter.collectionFormat !== null) {
-                                        if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Multi) {
-                                            if (queryParameterValue.length === 0) {
-                                                // The collection is empty, no need to try serializing the current queryParam
-                                                continue;
-                                            }
-                                            else {
-                                                for (index in queryParameterValue) {
-                                                    item = queryParameterValue[index];
-                                                    queryParameterValue[index] =
-                                                        item === undefined || item === null ? "" : item.toString();
-                                                }
-                                            }
-                                        }
-                                        else if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Ssv ||
-                                            queryParameter.collectionFormat === exports.QueryCollectionFormat.Tsv) {
-                                            queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
-                                        }
-                                    }
-                                    if (!queryParameter.skipEncoding) {
-                                        if (Array.isArray(queryParameterValue)) {
-                                            for (index in queryParameterValue) {
-                                                if (queryParameterValue[index] !== undefined &&
-                                                    queryParameterValue[index] !== null) {
-                                                    queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);
-                                                }
-                                            }
-                                        }
-                                        else {
-                                            queryParameterValue = encodeURIComponent(queryParameterValue);
-                                        }
-                                    }
-                                    if (queryParameter.collectionFormat !== undefined &&
-                                        queryParameter.collectionFormat !== null &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Multi &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Ssv &&
-                                        queryParameter.collectionFormat !== exports.QueryCollectionFormat.Tsv) {
-                                        queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
-                                    }
-                                    requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);
-                                }
-                            }
-                        }
-                        httpRequest.url = requestUrl.toString();
-                        contentType = operationSpec.contentType || this.requestContentType;
-                        if (contentType && operationSpec.requestBody) {
-                            httpRequest.headers.set("Content-Type", contentType);
-                        }
-                        if (operationSpec.headerParameters) {
-                            for (_e = 0, _f = operationSpec.headerParameters; _e < _f.length; _e++) {
-                                headerParameter = _f[_e];
-                                headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);
-                                if (headerValue !== undefined && headerValue !== null) {
-                                    headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter), serializerOptions);
-                                    headerCollectionPrefix = headerParameter.mapper
-                                        .headerCollectionPrefix;
-                                    if (headerCollectionPrefix) {
-                                        for (_g = 0, _h = Object.keys(headerValue); _g < _h.length; _g++) {
-                                            key = _h[_g];
-                                            httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);
-                                        }
-                                    }
-                                    else {
-                                        httpRequest.headers.set(headerParameter.mapper.serializedName ||
-                                            getPathStringFromParameter(headerParameter), headerValue);
+                                else {
+                                    for (const index in queryParameterValue) {
+                                        const item = queryParameterValue[index];
+                                        queryParameterValue[index] =
+                                            item === undefined || item === null ? "" : item.toString();
                                     }
                                 }
                             }
+                            else if (queryParameter.collectionFormat === exports.QueryCollectionFormat.Ssv ||
+                                queryParameter.collectionFormat === exports.QueryCollectionFormat.Tsv) {
+                                queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
+                            }
                         }
-                        options = operationArguments.options;
-                        if (options) {
-                            if (options.customHeaders) {
-                                for (customHeaderName in options.customHeaders) {
-                                    httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);
+                        if (!queryParameter.skipEncoding) {
+                            if (Array.isArray(queryParameterValue)) {
+                                for (const index in queryParameterValue) {
+                                    if (queryParameterValue[index] !== undefined &&
+                                        queryParameterValue[index] !== null) {
+                                        queryParameterValue[index] = encodeURIComponent(queryParameterValue[index]);
+                                    }
                                 }
                             }
-                            if (options.abortSignal) {
-                                httpRequest.abortSignal = options.abortSignal;
-                            }
-                            if (options.timeout) {
-                                httpRequest.timeout = options.timeout;
-                            }
-                            if (options.onUploadProgress) {
-                                httpRequest.onUploadProgress = options.onUploadProgress;
-                            }
-                            if (options.onDownloadProgress) {
-                                httpRequest.onDownloadProgress = options.onDownloadProgress;
-                            }
-                            if (options.spanOptions) {
-                                httpRequest.spanOptions = options.spanOptions;
-                            }
-                            if (options.tracingContext) {
-                                httpRequest.tracingContext = options.tracingContext;
-                            }
-                            if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {
-                                httpRequest.shouldDeserialize = options.shouldDeserialize;
+                            else {
+                                queryParameterValue = encodeURIComponent(queryParameterValue);
                             }
                         }
-                        httpRequest.withCredentials = this._withCredentials;
-                        serializeRequestBody(this, httpRequest, operationArguments, operationSpec);
-                        if (httpRequest.streamResponseStatusCodes === undefined) {
-                            httpRequest.streamResponseStatusCodes = getStreamResponseStatusCodes(operationSpec);
+                        if (queryParameter.collectionFormat !== undefined &&
+                            queryParameter.collectionFormat !== null &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Multi &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Ssv &&
+                            queryParameter.collectionFormat !== exports.QueryCollectionFormat.Tsv) {
+                            queryParameterValue = queryParameterValue.join(queryParameter.collectionFormat);
                         }
-                        rawResponse = void 0;
-                        sendRequestError = void 0;
-                        _j.label = 2;
-                    case 2:
-                        _j.trys.push([2, 4, , 5]);
-                        return [4 /*yield*/, this.sendRequest(httpRequest)];
-                    case 3:
-                        rawResponse = _j.sent();
-                        return [3 /*break*/, 5];
-                    case 4:
-                        error_1 = _j.sent();
-                        sendRequestError = error_1;
-                        return [3 /*break*/, 5];
-                    case 5:
-                        if (sendRequestError) {
-                            if (sendRequestError.response) {
-                                sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||
-                                    operationSpec.responses["default"]);
+                        requestUrl.setQueryParameter(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);
+                    }
+                }
+            }
+            httpRequest.url = requestUrl.toString();
+            const contentType = operationSpec.contentType || this.requestContentType;
+            if (contentType && operationSpec.requestBody) {
+                httpRequest.headers.set("Content-Type", contentType);
+            }
+            if (operationSpec.headerParameters) {
+                for (const headerParameter of operationSpec.headerParameters) {
+                    let headerValue = getOperationArgumentValueFromParameter(this, operationArguments, headerParameter, operationSpec.serializer);
+                    if (headerValue !== undefined && headerValue !== null) {
+                        headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter), serializerOptions);
+                        const headerCollectionPrefix = headerParameter.mapper
+                            .headerCollectionPrefix;
+                        if (headerCollectionPrefix) {
+                            for (const key of Object.keys(headerValue)) {
+                                httpRequest.headers.set(headerCollectionPrefix + key, headerValue[key]);
                             }
-                            result = Promise.reject(sendRequestError);
                         }
                         else {
-                            result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));
+                            httpRequest.headers.set(headerParameter.mapper.serializedName ||
+                                getPathStringFromParameter(headerParameter), headerValue);
                         }
-                        return [3 /*break*/, 7];
-                    case 6:
-                        error_2 = _j.sent();
-                        result = Promise.reject(error_2);
-                        return [3 /*break*/, 7];
-                    case 7:
-                        cb = callback;
-                        if (cb) {
-                            result
-                                .then(function (res) { return cb(null, res._response.parsedBody, res._response.request, res._response); })
-                                .catch(function (err) { return cb(err); });
-                        }
-                        return [2 /*return*/, result];
+                    }
                 }
-            });
-        });
-    };
-    return ServiceClient;
-}());
+            }
+            const options = operationArguments.options;
+            if (options) {
+                if (options.customHeaders) {
+                    for (const customHeaderName in options.customHeaders) {
+                        httpRequest.headers.set(customHeaderName, options.customHeaders[customHeaderName]);
+                    }
+                }
+                if (options.abortSignal) {
+                    httpRequest.abortSignal = options.abortSignal;
+                }
+                if (options.timeout) {
+                    httpRequest.timeout = options.timeout;
+                }
+                if (options.onUploadProgress) {
+                    httpRequest.onUploadProgress = options.onUploadProgress;
+                }
+                if (options.onDownloadProgress) {
+                    httpRequest.onDownloadProgress = options.onDownloadProgress;
+                }
+                if (options.spanOptions) {
+                    httpRequest.spanOptions = options.spanOptions;
+                }
+                if (options.tracingContext) {
+                    httpRequest.tracingContext = options.tracingContext;
+                }
+                if (options.shouldDeserialize !== undefined && options.shouldDeserialize !== null) {
+                    httpRequest.shouldDeserialize = options.shouldDeserialize;
+                }
+            }
+            httpRequest.withCredentials = this._withCredentials;
+            serializeRequestBody(this, httpRequest, operationArguments, operationSpec);
+            if (httpRequest.streamResponseStatusCodes === undefined) {
+                httpRequest.streamResponseStatusCodes = getStreamResponseStatusCodes(operationSpec);
+            }
+            let rawResponse;
+            let sendRequestError;
+            try {
+                rawResponse = await this.sendRequest(httpRequest);
+            }
+            catch (error) {
+                sendRequestError = error;
+            }
+            if (sendRequestError) {
+                if (sendRequestError.response) {
+                    sendRequestError.details = flattenResponse(sendRequestError.response, operationSpec.responses[sendRequestError.statusCode] ||
+                        operationSpec.responses["default"]);
+                }
+                result = Promise.reject(sendRequestError);
+            }
+            else {
+                result = Promise.resolve(flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]));
+            }
+        }
+        catch (error) {
+            result = Promise.reject(error);
+        }
+        const cb = callback;
+        if (cb) {
+            result
+                .then((res) => cb(null, res._response.parsedBody, res._response.request, res._response))
+                .catch((err) => cb(err));
+        }
+        return result;
+    }
+}
 function serializeRequestBody(serviceClient, httpRequest, operationArguments, operationSpec) {
     var _a, _b, _c, _d, _e, _f;
-    var serializerOptions = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions) !== null && _b !== void 0 ? _b : {};
-    var updatedOptions = {
+    const serializerOptions = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions) !== null && _b !== void 0 ? _b : {};
+    const updatedOptions = {
         rootName: (_c = serializerOptions.rootName) !== null && _c !== void 0 ? _c : "",
         includeRoot: (_d = serializerOptions.includeRoot) !== null && _d !== void 0 ? _d : false,
         xmlCharKey: (_e = serializerOptions.xmlCharKey) !== null && _e !== void 0 ? _e : XML_CHARKEY
     };
-    var xmlCharKey = serializerOptions.xmlCharKey;
+    const xmlCharKey = serializerOptions.xmlCharKey;
     if (operationSpec.requestBody && operationSpec.requestBody.mapper) {
         httpRequest.body = getOperationArgumentValueFromParameter(serviceClient, operationArguments, operationSpec.requestBody, operationSpec.serializer);
-        var bodyMapper = operationSpec.requestBody.mapper;
-        var required = bodyMapper.required, xmlName = bodyMapper.xmlName, xmlElementName = bodyMapper.xmlElementName, serializedName = bodyMapper.serializedName, xmlNamespace = bodyMapper.xmlNamespace, xmlNamespacePrefix = bodyMapper.xmlNamespacePrefix;
-        var typeName = bodyMapper.type.name;
+        const bodyMapper = operationSpec.requestBody.mapper;
+        const { required, xmlName, xmlElementName, serializedName, xmlNamespace, xmlNamespacePrefix } = bodyMapper;
+        const typeName = bodyMapper.type.name;
         try {
             if ((httpRequest.body !== undefined && httpRequest.body !== null) || required) {
-                var requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
+                const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);
                 httpRequest.body = operationSpec.serializer.serialize(bodyMapper, httpRequest.body, requestBodyParameterPathString, updatedOptions);
-                var isStream = typeName === MapperType.Stream;
+                const isStream = typeName === MapperType.Stream;
                 if (operationSpec.isXML) {
-                    var xmlnsKey = xmlNamespacePrefix ? "xmlns:" + xmlNamespacePrefix : "xmlns";
-                    var value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body, updatedOptions);
+                    const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : "xmlns";
+                    const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, httpRequest.body, updatedOptions);
                     if (typeName === MapperType.Sequence) {
                         httpRequest.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), {
                             rootName: xmlName || serializedName,
-                            xmlCharKey: xmlCharKey
+                            xmlCharKey
                         });
                     }
                     else if (!isStream) {
                         httpRequest.body = stringifyXML(value, {
                             rootName: xmlName || serializedName,
-                            xmlCharKey: xmlCharKey
+                            xmlCharKey
                         });
                     }
                 }
@@ -24337,16 +23549,15 @@ function serializeRequestBody(serviceClient, httpRequest, operationArguments, op
             }
         }
         catch (error) {
-            throw new Error("Error \"" + error.message + "\" occurred in serializing the payload - " + JSON.stringify(serializedName, undefined, "  ") + ".");
+            throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, "  ")}.`);
         }
     }
     else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {
         httpRequest.formData = {};
-        for (var _i = 0, _g = operationSpec.formDataParameters; _i < _g.length; _i++) {
-            var formDataParameter = _g[_i];
-            var formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);
+        for (const formDataParameter of operationSpec.formDataParameters) {
+            const formDataParameterValue = getOperationArgumentValueFromParameter(serviceClient, operationArguments, formDataParameter, operationSpec.serializer);
             if (formDataParameterValue !== undefined && formDataParameterValue !== null) {
-                var formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
+                const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);
                 httpRequest.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);
             }
         }
@@ -24356,19 +23567,18 @@ function serializeRequestBody(serviceClient, httpRequest, operationArguments, op
  * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself
  */
 function getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {
-    var _a;
     // Composite and Sequence schemas already got their root namespace set during serialization
     // We just need to add xmlns to the other schema types
     if (xmlNamespace && !["Composite", "Sequence", "Dictionary"].includes(typeName)) {
-        var result = {};
+        const result = {};
         result[options.xmlCharKey] = serializedValue;
-        result[XML_ATTRKEY] = (_a = {}, _a[xmlnsKey] = xmlNamespace, _a);
+        result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };
         return result;
     }
     return serializedValue;
 }
 function getValueOrFunctionResult(value, defaultValueCreator) {
-    var result;
+    let result;
     if (typeof value === "string") {
         result = value;
     }
@@ -24381,15 +23591,15 @@ function getValueOrFunctionResult(value, defaultValueCreator) {
     return result;
 }
 function createDefaultRequestPolicyFactories(authPolicyFactory, options) {
-    var factories = [];
+    const factories = [];
     if (options.generateClientRequestIdHeader) {
         factories.push(generateClientRequestIdPolicy(options.clientRequestIdHeaderName));
     }
     if (authPolicyFactory) {
         factories.push(authPolicyFactory);
     }
-    var userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);
-    var userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);
+    const userAgentHeaderName = getValueOrFunctionResult(options.userAgentHeaderName, getDefaultUserAgentHeaderName);
+    const userAgentHeaderValue = getValueOrFunctionResult(options.userAgent, getDefaultUserAgentValue);
     if (userAgentHeaderName && userAgentHeaderValue) {
         factories.push(userAgentPolicy({ key: userAgentHeaderName, value: userAgentHeaderValue }));
     }
@@ -24401,37 +23611,37 @@ function createDefaultRequestPolicyFactories(authPolicyFactory, options) {
         factories.push(throttlingRetryPolicy());
     }
     factories.push(deserializationPolicy(options.deserializationContentTypes));
-    {
+    if (isNode) {
         factories.push(proxyPolicy(options.proxySettings));
     }
     factories.push(logPolicy({ logger: logger.info }));
     return factories;
 }
 function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {
-    var requestPolicyFactories = [];
+    const requestPolicyFactories = [];
     if (pipelineOptions.sendStreamingJson) {
         requestPolicyFactories.push(ndJsonPolicy());
     }
-    var userAgentValue = undefined;
+    let userAgentValue = undefined;
     if (pipelineOptions.userAgentOptions && pipelineOptions.userAgentOptions.userAgentPrefix) {
-        var userAgentInfo = [];
+        const userAgentInfo = [];
         userAgentInfo.push(pipelineOptions.userAgentOptions.userAgentPrefix);
         // Add the default user agent value if it isn't already specified
         // by the userAgentPrefix option.
-        var defaultUserAgentInfo = getDefaultUserAgentValue();
+        const defaultUserAgentInfo = getDefaultUserAgentValue();
         if (userAgentInfo.indexOf(defaultUserAgentInfo) === -1) {
             userAgentInfo.push(defaultUserAgentInfo);
         }
         userAgentValue = userAgentInfo.join(" ");
     }
-    var keepAliveOptions = tslib.__assign(tslib.__assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);
-    var retryOptions = tslib.__assign(tslib.__assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);
-    var redirectOptions = tslib.__assign(tslib.__assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);
-    {
+    const keepAliveOptions = Object.assign(Object.assign({}, DefaultKeepAliveOptions), pipelineOptions.keepAliveOptions);
+    const retryOptions = Object.assign(Object.assign({}, DefaultRetryOptions), pipelineOptions.retryOptions);
+    const redirectOptions = Object.assign(Object.assign({}, DefaultRedirectOptions), pipelineOptions.redirectOptions);
+    if (isNode) {
         requestPolicyFactories.push(proxyPolicy(pipelineOptions.proxyOptions));
     }
-    var deserializationOptions = tslib.__assign(tslib.__assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);
-    var loggingOptions = tslib.__assign({}, pipelineOptions.loggingOptions);
+    const deserializationOptions = Object.assign(Object.assign({}, DefaultDeserializationOptions), pipelineOptions.deserializationOptions);
+    const loggingOptions = Object.assign({}, pipelineOptions.loggingOptions);
     requestPolicyFactories.push(tracingPolicy({ userAgent: userAgentValue }), keepAlivePolicy(keepAliveOptions), userAgentPolicy({ value: userAgentValue }), generateClientRequestIdPolicy(), deserializationPolicy(deserializationOptions.expectedContentTypes), throttlingRetryPolicy(), systemErrorRetryPolicy(), exponentialRetryPolicy(retryOptions.maxRetries, retryOptions.retryDelayInMs, retryOptions.maxRetryDelayInMs));
     if (redirectOptions.handleRedirects) {
         requestPolicyFactories.push(redirectPolicy(redirectOptions.maxRetries));
@@ -24445,7 +23655,7 @@ function createPipelineFromOptions(pipelineOptions, authPolicyFactory) {
     }
     return {
         httpClient: pipelineOptions.httpClient,
-        requestPolicyFactories: requestPolicyFactories
+        requestPolicyFactories
     };
 }
 function getOperationArgumentValueFromParameter(serviceClient, operationArguments, parameter, serializer) {
@@ -24453,22 +23663,22 @@ function getOperationArgumentValueFromParameter(serviceClient, operationArgument
 }
 function getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, parameterPath, parameterMapper, serializer) {
     var _a;
-    var value;
+    let value;
     if (typeof parameterPath === "string") {
         parameterPath = [parameterPath];
     }
-    var serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
+    const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;
     if (Array.isArray(parameterPath)) {
         if (parameterPath.length > 0) {
             if (parameterMapper.isConstant) {
                 value = parameterMapper.defaultValue;
             }
             else {
-                var propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);
+                let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);
                 if (!propertySearchResult.propertyFound) {
                     propertySearchResult = getPropertyFromParameterPath(serviceClient, parameterPath);
                 }
-                var useDefaultValue = false;
+                let useDefaultValue = false;
                 if (!propertySearchResult.propertyFound) {
                     useDefaultValue =
                         parameterMapper.required ||
@@ -24477,7 +23687,7 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
                 value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;
             }
             // Serialize just for validation purposes.
-            var parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);
+            const parameterPathString = getPathStringFromParameterPath(parameterPath, parameterMapper);
             serializer.serialize(parameterMapper, value, parameterPathString, serializerOptions);
         }
     }
@@ -24485,12 +23695,12 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
         if (parameterMapper.required) {
             value = {};
         }
-        for (var propertyName in parameterPath) {
-            var propertyMapper = parameterMapper.type.modelProperties[propertyName];
-            var propertyPath = parameterPath[propertyName];
-            var propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);
+        for (const propertyName in parameterPath) {
+            const propertyMapper = parameterMapper.type.modelProperties[propertyName];
+            const propertyPath = parameterPath[propertyName];
+            const propertyValue = getOperationArgumentValueFromParameterPath(serviceClient, operationArguments, propertyPath, propertyMapper, serializer);
             // Serialize just for validation purposes.
-            var propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);
+            const propertyPathString = getPathStringFromParameterPath(propertyPath, propertyMapper);
             serializer.serialize(propertyMapper, propertyValue, propertyPathString, serializerOptions);
             if (propertyValue !== undefined && propertyValue !== null) {
                 if (!value) {
@@ -24503,10 +23713,10 @@ function getOperationArgumentValueFromParameterPath(serviceClient, operationArgu
     return value;
 }
 function getPropertyFromParameterPath(parent, parameterPath) {
-    var result = { propertyFound: false };
-    var i = 0;
+    const result = { propertyFound: false };
+    let i = 0;
     for (; i < parameterPath.length; ++i) {
-        var parameterPathPart = parameterPath[i];
+        const parameterPathPart = parameterPath[i];
         // Make sure to check inherited properties too, so don't use hasOwnProperty().
         if (parent !== undefined && parent !== null && parameterPathPart in parent) {
             parent = parent[parameterPathPart];
@@ -24522,31 +23732,29 @@ function getPropertyFromParameterPath(parent, parameterPath) {
     return result;
 }
 function flattenResponse(_response, responseSpec) {
-    var parsedHeaders = _response.parsedHeaders;
-    var bodyMapper = responseSpec && responseSpec.bodyMapper;
-    var addOperationResponse = function (obj) {
+    const parsedHeaders = _response.parsedHeaders;
+    const bodyMapper = responseSpec && responseSpec.bodyMapper;
+    const addOperationResponse = (obj) => {
         return Object.defineProperty(obj, "_response", {
             value: _response
         });
     };
     if (bodyMapper) {
-        var typeName = bodyMapper.type.name;
+        const typeName = bodyMapper.type.name;
         if (typeName === "Stream") {
-            return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));
+            return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { blobBody: _response.blobBody, readableStreamBody: _response.readableStreamBody }));
         }
-        var modelProperties_1 = (typeName === "Composite" && bodyMapper.type.modelProperties) || {};
-        var isPageableResponse = Object.keys(modelProperties_1).some(function (k) { return modelProperties_1[k].serializedName === ""; });
+        const modelProperties = (typeName === "Composite" && bodyMapper.type.modelProperties) || {};
+        const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === "");
         if (typeName === "Sequence" || isPageableResponse) {
-            var arrayResponse = tslib.__spreadArray([], (_response.parsedBody || []));
-            for (var _i = 0, _a = Object.keys(modelProperties_1); _i < _a.length; _i++) {
-                var key = _a[_i];
-                if (modelProperties_1[key].serializedName) {
+            const arrayResponse = [...(_response.parsedBody || [])];
+            for (const key of Object.keys(modelProperties)) {
+                if (modelProperties[key].serializedName) {
                     arrayResponse[key] = _response.parsedBody[key];
                 }
             }
             if (parsedHeaders) {
-                for (var _b = 0, _c = Object.keys(parsedHeaders); _b < _c.length; _b++) {
-                    var key = _c[_b];
+                for (const key of Object.keys(parsedHeaders)) {
                     arrayResponse[key] = parsedHeaders[key];
                 }
             }
@@ -24554,26 +23762,26 @@ function flattenResponse(_response, responseSpec) {
             return arrayResponse;
         }
         if (typeName === "Composite" || typeName === "Dictionary") {
-            return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
+            return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));
         }
     }
     if (bodyMapper ||
         _response.request.method === "HEAD" ||
         isPrimitiveType(_response.parsedBody)) {
         // primitive body types and HEAD booleans
-        return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), { body: _response.parsedBody }));
+        return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), { body: _response.parsedBody }));
     }
-    return addOperationResponse(tslib.__assign(tslib.__assign({}, parsedHeaders), _response.parsedBody));
+    return addOperationResponse(Object.assign(Object.assign({}, parsedHeaders), _response.parsedBody));
 }
 function getCredentialScopes(options, baseUri) {
     if (options === null || options === void 0 ? void 0 : options.credentialScopes) {
-        var scopes = options.credentialScopes;
+        const scopes = options.credentialScopes;
         return Array.isArray(scopes)
-            ? scopes.map(function (scope) { return new url.URL(scope).toString(); })
+            ? scopes.map((scope) => new url.URL(scope).toString())
             : new url.URL(scopes).toString();
     }
     if (baseUri) {
-        return baseUri + "/.default";
+        return `${baseUri}/.default`;
     }
     return undefined;
 }
@@ -24597,7 +23805,7 @@ function createSpanFunction(args) {
 /**
  * Defines the default token refresh buffer duration.
  */
-var TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
+const TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
 /**
  * Provides an {@link AccessTokenCache} implementation which clears
  * the cached {@link AccessToken}'s after the expiresOnTimestamp has
@@ -24605,38 +23813,36 @@ var TokenRefreshBufferMs = 2 * 60 * 1000; // 2 Minutes
  *
  * @deprecated No longer used in the bearer authorization policy.
  */
-var ExpiringAccessTokenCache = /** @class */ (function () {
+class ExpiringAccessTokenCache {
     /**
      * Constructs an instance of {@link ExpiringAccessTokenCache} with
      * an optional expiration buffer time.
      */
-    function ExpiringAccessTokenCache(tokenRefreshBufferMs) {
-        if (tokenRefreshBufferMs === void 0) { tokenRefreshBufferMs = TokenRefreshBufferMs; }
+    constructor(tokenRefreshBufferMs = TokenRefreshBufferMs) {
         this.cachedToken = undefined;
         this.tokenRefreshBufferMs = tokenRefreshBufferMs;
     }
-    ExpiringAccessTokenCache.prototype.setCachedToken = function (accessToken) {
+    setCachedToken(accessToken) {
         this.cachedToken = accessToken;
-    };
-    ExpiringAccessTokenCache.prototype.getCachedToken = function () {
+    }
+    getCachedToken() {
         if (this.cachedToken &&
             Date.now() + this.tokenRefreshBufferMs >= this.cachedToken.expiresOnTimestamp) {
             this.cachedToken = undefined;
         }
         return this.cachedToken;
-    };
-    return ExpiringAccessTokenCache;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Helps the core-http token authentication policies with requesting a new token if we're not currently waiting for a new token.
  *
  * @deprecated No longer used in the bearer authorization policy.
  */
-var AccessTokenRefresher = /** @class */ (function () {
-    function AccessTokenRefresher(credential, scopes, requiredMillisecondsBeforeNewRefresh) {
-        if (requiredMillisecondsBeforeNewRefresh === void 0) { requiredMillisecondsBeforeNewRefresh = 30000; }
+class AccessTokenRefresher {
+    constructor(credential, scopes, requiredMillisecondsBeforeNewRefresh = 30000) {
         this.credential = credential;
         this.scopes = scopes;
         this.requiredMillisecondsBeforeNewRefresh = requiredMillisecondsBeforeNewRefresh;
@@ -24646,49 +23852,38 @@ var AccessTokenRefresher = /** @class */ (function () {
      * Returns true if the required milliseconds(defaulted to 30000) have been passed signifying
      * that we are ready for a new refresh.
      */
-    AccessTokenRefresher.prototype.isReady = function () {
+    isReady() {
         // We're only ready for a new refresh if the required milliseconds have passed.
         return (!this.lastCalled || Date.now() - this.lastCalled > this.requiredMillisecondsBeforeNewRefresh);
-    };
+    }
     /**
      * Stores the time in which it is called,
      * then requests a new token,
      * then sets this.promise to undefined,
      * then returns the token.
      */
-    AccessTokenRefresher.prototype.getToken = function (options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var token;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        this.lastCalled = Date.now();
-                        return [4 /*yield*/, this.credential.getToken(this.scopes, options)];
-                    case 1:
-                        token = _a.sent();
-                        this.promise = undefined;
-                        return [2 /*return*/, token || undefined];
-                }
-            });
-        });
-    };
+    async getToken(options) {
+        this.lastCalled = Date.now();
+        const token = await this.credential.getToken(this.scopes, options);
+        this.promise = undefined;
+        return token || undefined;
+    }
     /**
      * Requests a new token if we're not currently waiting for a new token.
      * Returns null if the required time between each call hasn't been reached.
      */
-    AccessTokenRefresher.prototype.refresh = function (options) {
+    refresh(options) {
         if (!this.promise) {
             this.promise = this.getToken(options);
         }
         return this.promise;
-    };
-    return AccessTokenRefresher;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var HeaderConstants = Constants.HeaderConstants;
-var DEFAULT_AUTHORIZATION_SCHEME = "Basic";
-var BasicAuthenticationCredentials = /** @class */ (function () {
+const HeaderConstants = Constants.HeaderConstants;
+const DEFAULT_AUTHORIZATION_SCHEME = "Basic";
+class BasicAuthenticationCredentials {
     /**
      * Creates a new BasicAuthenticationCredentials object.
      *
@@ -24696,8 +23891,7 @@ var BasicAuthenticationCredentials = /** @class */ (function () {
      * @param password - Password.
      * @param authorizationScheme - The authorization scheme.
      */
-    function BasicAuthenticationCredentials(userName, password, authorizationScheme) {
-        if (authorizationScheme === void 0) { authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME; }
+    constructor(userName, password, authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME) {
         this.authorizationScheme = DEFAULT_AUTHORIZATION_SCHEME;
         if (userName === null || userName === undefined || typeof userName.valueOf() !== "string") {
             throw new Error("userName cannot be null or undefined and must be of type string.");
@@ -24715,28 +23909,27 @@ var BasicAuthenticationCredentials = /** @class */ (function () {
      * @param webResource - The WebResourceLike to be signed.
      * @returns The signed request object.
      */
-    BasicAuthenticationCredentials.prototype.signRequest = function (webResource) {
-        var credentials = this.userName + ":" + this.password;
-        var encodedCredentials = this.authorizationScheme + " " + encodeString(credentials);
+    signRequest(webResource) {
+        const credentials = `${this.userName}:${this.password}`;
+        const encodedCredentials = `${this.authorizationScheme} ${encodeString(credentials)}`;
         if (!webResource.headers)
             webResource.headers = new HttpHeaders();
         webResource.headers.set(HeaderConstants.AUTHORIZATION, encodedCredentials);
         return Promise.resolve(webResource);
-    };
-    return BasicAuthenticationCredentials;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Authenticates to a service using an API key.
  */
-var ApiKeyCredentials = /** @class */ (function () {
+class ApiKeyCredentials {
     /**
      * @param options - Specifies the options to be provided for auth. Either header or query needs to be provided.
      */
-    function ApiKeyCredentials(options) {
+    constructor(options) {
         if (!options || (options && !options.inHeader && !options.inQuery)) {
-            throw new Error("options cannot be null or undefined. Either \"inHeader\" or \"inQuery\" property of the options object needs to be provided.");
+            throw new Error(`options cannot be null or undefined. Either "inHeader" or "inQuery" property of the options object needs to be provided.`);
         }
         this.inHeader = options.inHeader;
         this.inQuery = options.inQuery;
@@ -24747,60 +23940,55 @@ var ApiKeyCredentials = /** @class */ (function () {
      * @param webResource - The WebResourceLike to be signed.
      * @returns The signed request object.
      */
-    ApiKeyCredentials.prototype.signRequest = function (webResource) {
+    signRequest(webResource) {
         if (!webResource) {
-            return Promise.reject(new Error("webResource cannot be null or undefined and must be of type \"object\"."));
+            return Promise.reject(new Error(`webResource cannot be null or undefined and must be of type "object".`));
         }
         if (this.inHeader) {
             if (!webResource.headers) {
                 webResource.headers = new HttpHeaders();
             }
-            for (var headerName in this.inHeader) {
+            for (const headerName in this.inHeader) {
                 webResource.headers.set(headerName, this.inHeader[headerName]);
             }
         }
         if (this.inQuery) {
             if (!webResource.url) {
-                return Promise.reject(new Error("url cannot be null in the request object."));
+                return Promise.reject(new Error(`url cannot be null in the request object.`));
             }
             if (webResource.url.indexOf("?") < 0) {
                 webResource.url += "?";
             }
-            for (var key in this.inQuery) {
+            for (const key in this.inQuery) {
                 if (!webResource.url.endsWith("?")) {
                     webResource.url += "&";
                 }
-                webResource.url += key + "=" + this.inQuery[key];
+                webResource.url += `${key}=${this.inQuery[key]}`;
             }
         }
         return Promise.resolve(webResource);
-    };
-    return ApiKeyCredentials;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var TopicCredentials = /** @class */ (function (_super) {
-    tslib.__extends(TopicCredentials, _super);
+class TopicCredentials extends ApiKeyCredentials {
     /**
      * Creates a new EventGrid TopicCredentials object.
      *
      * @param topicKey - The EventGrid topic key
      */
-    function TopicCredentials(topicKey) {
-        var _this = this;
+    constructor(topicKey) {
         if (!topicKey || (topicKey && typeof topicKey !== "string")) {
             throw new Error("topicKey cannot be null or undefined and must be of type string.");
         }
-        var options = {
+        const options = {
             inHeader: {
                 "aeg-sas-key": topicKey
             }
         };
-        _this = _super.call(this, options) || this;
-        return _this;
+        super(options);
     }
-    return TopicCredentials;
-}(ApiKeyCredentials));
+}
 
 Object.defineProperty(exports, 'isTokenCredential', {
     enumerable: true,
@@ -26025,7 +25213,92 @@ var DiagLogLevel;
 
 /***/ }),
 /* 361 */,
-/* 362 */,
+/* 362 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DiagComponentLogger = void 0;
+var global_utils_1 = __webpack_require__(525);
+/**
+ * Component Logger which is meant to be used as part of any component which
+ * will add automatically additional namespace in front of the log message.
+ * It will then forward all message to global diag logger
+ * @example
+ * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });
+ * cLogger.debug('test');
+ * // @opentelemetry/instrumentation-http test
+ */
+var DiagComponentLogger = /** @class */ (function () {
+    function DiagComponentLogger(props) {
+        this._namespace = props.namespace || 'DiagComponentLogger';
+    }
+    DiagComponentLogger.prototype.debug = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('debug', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.error = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('error', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.info = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('info', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.warn = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('warn', this._namespace, args);
+    };
+    DiagComponentLogger.prototype.verbose = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+        }
+        return logProxy('verbose', this._namespace, args);
+    };
+    return DiagComponentLogger;
+}());
+exports.DiagComponentLogger = DiagComponentLogger;
+function logProxy(funcName, namespace, args) {
+    var logger = global_utils_1.getGlobal('diag');
+    // shortcut if logger not set
+    if (!logger) {
+        return;
+    }
+    args.unshift(namespace);
+    return logger[funcName].apply(logger, args);
+}
+//# sourceMappingURL=ComponentLogger.js.map
+
+/***/ }),
 /* 363 */,
 /* 364 */,
 /* 365 */,
@@ -26509,6 +25782,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
 exports.ProxyTracerProvider = void 0;
 var ProxyTracer_1 = __webpack_require__(398);
 var NoopTracerProvider_1 = __webpack_require__(224);
+var NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();
 /**
  * Tracer provider which provides {@link ProxyTracer}s.
  *
@@ -26529,7 +25803,7 @@ var ProxyTracerProvider = /** @class */ (function () {
     };
     ProxyTracerProvider.prototype.getDelegate = function () {
         var _a;
-        return (_a = this._delegate) !== null && _a !== void 0 ? _a : NoopTracerProvider_1.NOOP_TRACER_PROVIDER;
+        return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;
     };
     /**
      * Set the delegate tracer provider
@@ -26587,6 +25861,7 @@ module.exports = function (Yallist) {
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.ProxyTracer = void 0;
 var NoopTracer_1 = __webpack_require__(216);
+var NOOP_TRACER = new NoopTracer_1.NoopTracer();
 /**
  * Proxy tracer provided by the proxy tracer provider
  */
@@ -26599,6 +25874,10 @@ var ProxyTracer = /** @class */ (function () {
     ProxyTracer.prototype.startSpan = function (name, options, context) {
         return this._getTracer().startSpan(name, options, context);
     };
+    ProxyTracer.prototype.startActiveSpan = function (_name, _options, _context, _fn) {
+        var tracer = this._getTracer();
+        return Reflect.apply(tracer.startActiveSpan, tracer, arguments);
+    };
     /**
      * Try to get a tracer from the proxy tracer provider.
      * If the proxy tracer provider has no delegate, return a noop tracer.
@@ -26609,7 +25888,7 @@ var ProxyTracer = /** @class */ (function () {
         }
         var tracer = this._provider.getDelegateTracer(this.name, this.version);
         if (!tracer) {
-            return NoopTracer_1.NOOP_TRACER;
+            return NOOP_TRACER;
         }
         this._delegate = tracer;
         return this._delegate;
@@ -28799,7 +28078,77 @@ exports.listTar = listTar;
 /***/ }),
 /* 435 */,
 /* 436 */,
-/* 437 */,
+/* 437 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NonRecordingSpan = void 0;
+var spancontext_utils_1 = __webpack_require__(453);
+/**
+ * The NonRecordingSpan is the default {@link Span} that is used when no Span
+ * implementation is available. All operations are no-op including context
+ * propagation.
+ */
+var NonRecordingSpan = /** @class */ (function () {
+    function NonRecordingSpan(_spanContext) {
+        if (_spanContext === void 0) { _spanContext = spancontext_utils_1.INVALID_SPAN_CONTEXT; }
+        this._spanContext = _spanContext;
+    }
+    // Returns a SpanContext.
+    NonRecordingSpan.prototype.spanContext = function () {
+        return this._spanContext;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setAttribute = function (_key, _value) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setAttributes = function (_attributes) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.addEvent = function (_name, _attributes) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.setStatus = function (_status) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.updateName = function (_name) {
+        return this;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.end = function (_endTime) { };
+    // isRecording always returns false for NonRecordingSpan.
+    NonRecordingSpan.prototype.isRecording = function () {
+        return false;
+    };
+    // By default does nothing
+    NonRecordingSpan.prototype.recordException = function (_exception, _time) { };
+    return NonRecordingSpan;
+}());
+exports.NonRecordingSpan = NonRecordingSpan;
+//# sourceMappingURL=NonRecordingSpan.js.map
+
+/***/ }),
 /* 438 */,
 /* 439 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
@@ -29001,19 +28350,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
     for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 };
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.diag = exports.propagation = exports.trace = exports.context = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
-__exportStar(__webpack_require__(792), exports);
+exports.diag = exports.propagation = exports.trace = exports.context = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.baggageEntryMetadataFromString = void 0;
+__exportStar(__webpack_require__(880), exports);
+var utils_1 = __webpack_require__(872);
+Object.defineProperty(exports, "baggageEntryMetadataFromString", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });
 __exportStar(__webpack_require__(452), exports);
 __exportStar(__webpack_require__(158), exports);
 __exportStar(__webpack_require__(893), exports);
-__exportStar(__webpack_require__(637), exports);
 __exportStar(__webpack_require__(649), exports);
 __exportStar(__webpack_require__(906), exports);
-__exportStar(__webpack_require__(727), exports);
-__exportStar(__webpack_require__(851), exports);
 __exportStar(__webpack_require__(843), exports);
-__exportStar(__webpack_require__(216), exports);
-__exportStar(__webpack_require__(224), exports);
 __exportStar(__webpack_require__(398), exports);
 __exportStar(__webpack_require__(394), exports);
 __exportStar(__webpack_require__(79), exports);
@@ -29023,7 +28369,6 @@ __exportStar(__webpack_require__(670), exports);
 __exportStar(__webpack_require__(59), exports);
 __exportStar(__webpack_require__(220), exports);
 __exportStar(__webpack_require__(409), exports);
-__exportStar(__webpack_require__(839), exports);
 __exportStar(__webpack_require__(975), exports);
 __exportStar(__webpack_require__(70), exports);
 __exportStar(__webpack_require__(694), exports);
@@ -29036,7 +28381,6 @@ Object.defineProperty(exports, "isSpanContextValid", { enumerable: true, get: fu
 Object.defineProperty(exports, "isValidTraceId", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });
 Object.defineProperty(exports, "isValidSpanId", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });
 __exportStar(__webpack_require__(132), exports);
-__exportStar(__webpack_require__(754), exports);
 __exportStar(__webpack_require__(845), exports);
 var context_1 = __webpack_require__(77);
 /** Entrypoint for context API */
@@ -29351,7 +28695,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
 "use strict";
 
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
+exports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+var NonRecordingSpan_1 = __webpack_require__(437);
 var trace_flags_1 = __webpack_require__(975);
 var VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;
 var VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;
@@ -29378,6 +28738,16 @@ function isSpanContextValid(spanContext) {
     return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));
 }
 exports.isSpanContextValid = isSpanContextValid;
+/**
+ * Wrap the given {@link SpanContext} in a new non-recording {@link Span}
+ *
+ * @param spanContext span context to be wrapped
+ * @returns a new non-recording {@link Span} with the provided context
+ */
+function wrapSpanContext(spanContext) {
+    return new NonRecordingSpan_1.NonRecordingSpan(spanContext);
+}
+exports.wrapSpanContext = wrapSpanContext;
 //# sourceMappingURL=spancontext-utils.js.map
 
 /***/ }),
@@ -38555,27 +37925,15 @@ module.exports = clean
 /* 508 */,
 /* 509 */,
 /* 510 */
-/***/ (function(__unusedmodule, exports) {
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Entry.js.map
+__webpack_require__(71);
+
 
 /***/ }),
 /* 511 */,
@@ -38892,33 +38250,33 @@ exports.CompareCache = CompareCache;
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;
-var __1 = __webpack_require__(440);
 var platform_1 = __webpack_require__(127);
 var version_1 = __webpack_require__(133);
 var semver_1 = __webpack_require__(987);
 var major = version_1.VERSION.split('.')[0];
-var GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for("io.opentelemetry.js.api." + major);
+var GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for("opentelemetry.js.api." + major);
 var _global = platform_1._globalThis;
-function registerGlobal(type, instance, allowOverride) {
+function registerGlobal(type, instance, diag, allowOverride) {
     var _a;
     if (allowOverride === void 0) { allowOverride = false; }
-    _global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {
+    var api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {
         version: version_1.VERSION,
-    };
-    var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];
+    });
     if (!allowOverride && api[type]) {
         // already registered an API of this type
         var err = new Error("@opentelemetry/api: Attempted duplicate registration of API: " + type);
-        __1.diag.error(err.stack || err.message);
-        return;
+        diag.error(err.stack || err.message);
+        return false;
     }
     if (api.version !== version_1.VERSION) {
         // All registered APIs must be of the same version exactly
         var err = new Error('@opentelemetry/api: All API registration versions must match');
-        __1.diag.error(err.stack || err.message);
-        return;
+        diag.error(err.stack || err.message);
+        return false;
     }
     api[type] = instance;
+    diag.debug("@opentelemetry/api: Registered a global for " + type + " v" + version_1.VERSION + ".");
+    return true;
 }
 exports.registerGlobal = registerGlobal;
 function getGlobal(type) {
@@ -38930,7 +38288,8 @@ function getGlobal(type) {
     return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];
 }
 exports.getGlobal = getGlobal;
-function unregisterGlobal(type) {
+function unregisterGlobal(type, diag) {
+    diag.debug("@opentelemetry/api: Unregistering a global for " + type + " v" + version_1.VERSION + ".");
     var api = _global[GLOBAL_OPENTELEMETRY_API_KEY];
     if (api) {
         delete api[type];
@@ -46389,76 +45748,7 @@ exports.EventTargetImpl = EventTargetImpl;
 
 /***/ }),
 /* 598 */,
-/* 599 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.BaggageImpl = void 0;
-var BaggageImpl = /** @class */ (function () {
-    function BaggageImpl(entries) {
-        this._entries = entries ? new Map(entries) : new Map();
-    }
-    BaggageImpl.prototype.getEntry = function (key) {
-        var entry = this._entries.get(key);
-        if (!entry) {
-            return undefined;
-        }
-        return Object.assign({}, entry);
-    };
-    BaggageImpl.prototype.getAllEntries = function () {
-        return Array.from(this._entries.entries()).map(function (_a) {
-            var k = _a[0], v = _a[1];
-            return [k, v];
-        });
-    };
-    BaggageImpl.prototype.setEntry = function (key, entry) {
-        var newBaggage = new BaggageImpl(this._entries);
-        newBaggage._entries.set(key, entry);
-        return newBaggage;
-    };
-    BaggageImpl.prototype.removeEntry = function (key) {
-        var newBaggage = new BaggageImpl(this._entries);
-        newBaggage._entries.delete(key);
-        return newBaggage;
-    };
-    BaggageImpl.prototype.removeEntries = function () {
-        var keys = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-            keys[_i] = arguments[_i];
-        }
-        var newBaggage = new BaggageImpl(this._entries);
-        for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
-            var key = keys_1[_a];
-            newBaggage._entries.delete(key);
-        }
-        return newBaggage;
-    };
-    BaggageImpl.prototype.clear = function () {
-        return new BaggageImpl();
-    };
-    return BaggageImpl;
-}());
-exports.BaggageImpl = BaggageImpl;
-//# sourceMappingURL=baggage.js.map
-
-/***/ }),
+/* 599 */,
 /* 600 */,
 /* 601 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
@@ -48170,7 +47460,7 @@ exports.NodeListImpl = NodeListImpl;
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.NOOP_TEXT_MAP_PROPAGATOR = exports.NoopTextMapPropagator = void 0;
+exports.NoopTextMapPropagator = void 0;
 /**
  * No-op implementations of {@link TextMapPropagator}.
  */
@@ -48189,7 +47479,6 @@ var NoopTextMapPropagator = /** @class */ (function () {
     return NoopTextMapPropagator;
 }());
 exports.NoopTextMapPropagator = NoopTextMapPropagator;
-exports.NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();
 //# sourceMappingURL=NoopTextMapPropagator.js.map
 
 /***/ }),
@@ -48287,312 +47576,312 @@ module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"appl
 /* 640 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -51954,7 +51243,76 @@ exports.namespace_extractQName = namespace_extractQName;
 
 /***/ }),
 /* 665 */,
-/* 666 */,
+/* 666 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.BaggageImpl = void 0;
+var BaggageImpl = /** @class */ (function () {
+    function BaggageImpl(entries) {
+        this._entries = entries ? new Map(entries) : new Map();
+    }
+    BaggageImpl.prototype.getEntry = function (key) {
+        var entry = this._entries.get(key);
+        if (!entry) {
+            return undefined;
+        }
+        return Object.assign({}, entry);
+    };
+    BaggageImpl.prototype.getAllEntries = function () {
+        return Array.from(this._entries.entries()).map(function (_a) {
+            var k = _a[0], v = _a[1];
+            return [k, v];
+        });
+    };
+    BaggageImpl.prototype.setEntry = function (key, entry) {
+        var newBaggage = new BaggageImpl(this._entries);
+        newBaggage._entries.set(key, entry);
+        return newBaggage;
+    };
+    BaggageImpl.prototype.removeEntry = function (key) {
+        var newBaggage = new BaggageImpl(this._entries);
+        newBaggage._entries.delete(key);
+        return newBaggage;
+    };
+    BaggageImpl.prototype.removeEntries = function () {
+        var keys = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+            keys[_i] = arguments[_i];
+        }
+        var newBaggage = new BaggageImpl(this._entries);
+        for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
+            var key = keys_1[_a];
+            newBaggage._entries.delete(key);
+        }
+        return newBaggage;
+    };
+    BaggageImpl.prototype.clear = function () {
+        return new BaggageImpl();
+    };
+    return BaggageImpl;
+}());
+exports.BaggageImpl = BaggageImpl;
+//# sourceMappingURL=baggage-impl.js.map
+
+/***/ }),
 /* 667 */,
 /* 668 */,
 /* 669 */
@@ -55392,18 +54750,7 @@ exports.abort_signalAbort = abort_signalAbort;
 //# sourceMappingURL=AbortAlgorithm.js.map
 
 /***/ }),
-/* 711 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-// Copyright (c) Microsoft Corporation.
-// Licensed under the MIT license.
-Object.defineProperty(exports, "__esModule", { value: true });
-__webpack_require__(71);
-
-
-/***/ }),
+/* 711 */,
 /* 712 */,
 /* 713 */,
 /* 714 */
@@ -55545,343 +54892,9 @@ module.exports = new Schema({
 
 
 /***/ }),
-/* 725 */
-/***/ (function(module) {
-
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
-
-
-/***/ }),
+/* 725 */,
 /* 726 */,
-/* 727 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Event.js.map
-
-/***/ }),
+/* 727 */,
 /* 728 */
 /***/ (function(__unusedmodule, exports) {
 
@@ -55906,7 +54919,7 @@ exports.SearchState = SearchState;
 
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.getJavaDistribution = void 0;
-const installer_1 = __webpack_require__(757);
+const installer_1 = __webpack_require__(144);
 const installer_2 = __webpack_require__(834);
 const installer_3 = __webpack_require__(584);
 const installer_4 = __webpack_require__(439);
@@ -56791,12 +55804,10 @@ module.exports = cmp
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-var __spreadArrays = (this && this.__spreadArrays) || function () {
-    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-    for (var r = Array(s), k = 0, i = 0; i < il; i++)
-        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-            r[k] = a[j];
-    return r;
+var __spreadArray = (this && this.__spreadArray) || function (to, from) {
+    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
+        to[j] = from[i];
+    return to;
 };
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.NoopContextManager = void 0;
@@ -56812,9 +55823,9 @@ var NoopContextManager = /** @class */ (function () {
         for (var _i = 3; _i < arguments.length; _i++) {
             args[_i - 3] = arguments[_i];
         }
-        return fn.call.apply(fn, __spreadArrays([thisArg], args));
+        return fn.call.apply(fn, __spreadArray([thisArg], args));
     };
-    NoopContextManager.prototype.bind = function (target, _context) {
+    NoopContextManager.prototype.bind = function (_context, target) {
         return target;
     };
     NoopContextManager.prototype.enable = function () {
@@ -56864,108 +55875,7 @@ exports.NoopContextManager = NoopContextManager;
 
 /***/ }),
 /* 756 */,
-/* 757 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
-    Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
-    o["default"] = v;
-});
-var __importStar = (this && this.__importStar) || function (mod) {
-    if (mod && mod.__esModule) return mod;
-    var result = {};
-    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-    __setModuleDefault(result, mod);
-    return result;
-};
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.LocalDistribution = void 0;
-const tc = __importStar(__webpack_require__(139));
-const core = __importStar(__webpack_require__(470));
-const fs_1 = __importDefault(__webpack_require__(747));
-const path_1 = __importDefault(__webpack_require__(622));
-const base_installer_1 = __webpack_require__(83);
-const util_1 = __webpack_require__(322);
-const constants_1 = __webpack_require__(211);
-class LocalDistribution extends base_installer_1.JavaBase {
-    constructor(installerOptions, jdkFile) {
-        super('jdkfile', installerOptions);
-        this.jdkFile = jdkFile;
-    }
-    setupJava() {
-        return __awaiter(this, void 0, void 0, function* () {
-            let foundJava = this.findInToolcache();
-            if (foundJava) {
-                core.info(`Resolved Java ${foundJava.version} from tool-cache`);
-            }
-            else {
-                core.info(`Java ${this.version} was not found in tool-cache. Trying to unpack JDK file...`);
-                if (!this.jdkFile) {
-                    throw new Error("'jdkFile' is not specified");
-                }
-                const jdkFilePath = path_1.default.resolve(this.jdkFile);
-                const stats = fs_1.default.statSync(jdkFilePath);
-                if (!stats.isFile()) {
-                    throw new Error(`JDK file was not found in path '${jdkFilePath}'`);
-                }
-                core.info(`Extracting Java from '${jdkFilePath}'`);
-                const extractedJavaPath = yield util_1.extractJdkFile(jdkFilePath);
-                const archiveName = fs_1.default.readdirSync(extractedJavaPath)[0];
-                const archivePath = path_1.default.join(extractedJavaPath, archiveName);
-                const javaVersion = this.version;
-                let javaPath = yield tc.cacheDir(archivePath, this.toolcacheFolderName, this.getToolcacheVersionName(javaVersion), this.architecture);
-                // for different Java distributions, postfix can exist or not so need to check both cases
-                if (process.platform === 'darwin' &&
-                    fs_1.default.existsSync(path_1.default.join(javaPath, constants_1.MACOS_JAVA_CONTENT_POSTFIX))) {
-                    javaPath = path_1.default.join(javaPath, constants_1.MACOS_JAVA_CONTENT_POSTFIX);
-                }
-                foundJava = {
-                    version: javaVersion,
-                    path: javaPath
-                };
-            }
-            core.info(`Setting Java ${foundJava.version} as default`);
-            this.setJavaDefault(foundJava.version, foundJava.path);
-            return foundJava;
-        });
-    }
-    findPackageForDownload(version) {
-        return __awaiter(this, void 0, void 0, function* () {
-            throw new Error('This method should not be implemented in local file provider');
-        });
-    }
-    downloadTool(javaRelease) {
-        return __awaiter(this, void 0, void 0, function* () {
-            throw new Error('This method should not be implemented in local file provider');
-        });
-    }
-}
-exports.LocalDistribution = LocalDistribution;
-
-
-/***/ }),
+/* 757 */,
 /* 758 */,
 /* 759 */,
 /* 760 */
@@ -57381,77 +56291,7 @@ module.exports = function(dst, src) {
 
 
 /***/ }),
-/* 767 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NoopSpan = void 0;
-var spancontext_utils_1 = __webpack_require__(453);
-/**
- * The NoopSpan is the default {@link Span} that is used when no Span
- * implementation is available. All operations are no-op including context
- * propagation.
- */
-var NoopSpan = /** @class */ (function () {
-    function NoopSpan(_spanContext) {
-        if (_spanContext === void 0) { _spanContext = spancontext_utils_1.INVALID_SPAN_CONTEXT; }
-        this._spanContext = _spanContext;
-    }
-    // Returns a SpanContext.
-    NoopSpan.prototype.context = function () {
-        return this._spanContext;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setAttribute = function (_key, _value) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setAttributes = function (_attributes) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.addEvent = function (_name, _attributes) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.setStatus = function (_status) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.updateName = function (_name) {
-        return this;
-    };
-    // By default does nothing
-    NoopSpan.prototype.end = function (_endTime) { };
-    // isRecording always returns false for noopSpan.
-    NoopSpan.prototype.isRecording = function () {
-        return false;
-    };
-    // By default does nothing
-    NoopSpan.prototype.recordException = function (_exception, _time) { };
-    return NoopSpan;
-}());
-exports.NoopSpan = NoopSpan;
-//# sourceMappingURL=NoopSpan.js.map
-
-/***/ }),
+/* 767 */,
 /* 768 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -59521,74 +58361,7 @@ FormData.prototype.toString = function () {
 
 
 /***/ }),
-/* 792 */
-/***/ (function(__unusedmodule, exports, __webpack_require__) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
-    if (k2 === undefined) k2 = k;
-    o[k2] = m[k];
-}));
-var __exportStar = (this && this.__exportStar) || function(m, exports) {
-    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.baggageEntryMetadataFromString = exports.createBaggage = void 0;
-var baggage_1 = __webpack_require__(599);
-var symbol_1 = __webpack_require__(561);
-__exportStar(__webpack_require__(938), exports);
-__exportStar(__webpack_require__(510), exports);
-/**
- * Create a new Baggage with optional entries
- *
- * @param entries An array of baggage entries the new baggage should contain
- */
-function createBaggage(entries) {
-    if (entries === void 0) { entries = {}; }
-    return new baggage_1.BaggageImpl(new Map(Object.entries(entries)));
-}
-exports.createBaggage = createBaggage;
-/**
- * Create a serializable BaggageEntryMetadata object from a string.
- *
- * @param str string metadata. Format is currently not defined by the spec and has no special meaning.
- *
- */
-function baggageEntryMetadataFromString(str) {
-    if (typeof str !== 'string') {
-        // @TODO log diagnostic
-        str = '';
-    }
-    return {
-        __TYPE__: symbol_1.baggageEntryMetadataSymbol,
-        toString: function () {
-            return str;
-        },
-    };
-}
-exports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;
-//# sourceMappingURL=index.js.map
-
-/***/ }),
+/* 792 */,
 /* 793 */,
 /* 794 */
 /***/ (function(module) {
@@ -62772,312 +61545,312 @@ exports.asciiSerializationOfAnOrigin = asciiSerializationOfAnOrigin;
 /* 815 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -63518,7 +62291,7 @@ var abortController = __webpack_require__(819);
 var os = __webpack_require__(87);
 var crypto = __webpack_require__(373);
 var stream = __webpack_require__(794);
-__webpack_require__(711);
+__webpack_require__(510);
 var coreLro = __webpack_require__(110);
 var events = __webpack_require__(614);
 var fs = __webpack_require__(747);
@@ -63531,7 +62304,7 @@ var util = __webpack_require__(669);
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var BlobServiceProperties = {
+const BlobServiceProperties = {
     serializedName: "BlobServiceProperties",
     xmlName: "StorageServiceProperties",
     type: {
@@ -63603,7 +62376,7 @@ var BlobServiceProperties = {
         }
     }
 };
-var Logging = {
+const Logging = {
     serializedName: "Logging",
     type: {
         name: "Composite",
@@ -63652,7 +62425,7 @@ var Logging = {
         }
     }
 };
-var RetentionPolicy = {
+const RetentionPolicy = {
     serializedName: "RetentionPolicy",
     type: {
         name: "Composite",
@@ -63679,7 +62452,7 @@ var RetentionPolicy = {
         }
     }
 };
-var Metrics = {
+const Metrics = {
     serializedName: "Metrics",
     type: {
         name: "Composite",
@@ -63718,7 +62491,7 @@ var Metrics = {
         }
     }
 };
-var CorsRule = {
+const CorsRule = {
     serializedName: "CorsRule",
     type: {
         name: "Composite",
@@ -63770,7 +62543,7 @@ var CorsRule = {
         }
     }
 };
-var StaticWebsite = {
+const StaticWebsite = {
     serializedName: "StaticWebsite",
     type: {
         name: "Composite",
@@ -63808,7 +62581,7 @@ var StaticWebsite = {
         }
     }
 };
-var StorageError = {
+const StorageError = {
     serializedName: "StorageError",
     type: {
         name: "Composite",
@@ -63831,7 +62604,7 @@ var StorageError = {
         }
     }
 };
-var BlobServiceStatistics = {
+const BlobServiceStatistics = {
     serializedName: "BlobServiceStatistics",
     xmlName: "StorageServiceStats",
     type: {
@@ -63849,7 +62622,7 @@ var BlobServiceStatistics = {
         }
     }
 };
-var GeoReplication = {
+const GeoReplication = {
     serializedName: "GeoReplication",
     type: {
         name: "Composite",
@@ -63875,7 +62648,7 @@ var GeoReplication = {
         }
     }
 };
-var ListContainersSegmentResponse = {
+const ListContainersSegmentResponse = {
     serializedName: "ListContainersSegmentResponse",
     xmlName: "EnumerationResults",
     type: {
@@ -63938,7 +62711,7 @@ var ListContainersSegmentResponse = {
         }
     }
 };
-var ContainerItem = {
+const ContainerItem = {
     serializedName: "ContainerItem",
     xmlName: "Container",
     type: {
@@ -63986,7 +62759,7 @@ var ContainerItem = {
         }
     }
 };
-var ContainerProperties = {
+const ContainerProperties = {
     serializedName: "ContainerProperties",
     type: {
         name: "Composite",
@@ -64091,7 +62864,7 @@ var ContainerProperties = {
         }
     }
 };
-var KeyInfo = {
+const KeyInfo = {
     serializedName: "KeyInfo",
     type: {
         name: "Composite",
@@ -64116,7 +62889,7 @@ var KeyInfo = {
         }
     }
 };
-var UserDelegationKey = {
+const UserDelegationKey = {
     serializedName: "UserDelegationKey",
     type: {
         name: "Composite",
@@ -64181,7 +62954,7 @@ var UserDelegationKey = {
         }
     }
 };
-var FilterBlobSegment = {
+const FilterBlobSegment = {
     serializedName: "FilterBlobSegment",
     xmlName: "EnumerationResults",
     type: {
@@ -64231,7 +63004,7 @@ var FilterBlobSegment = {
         }
     }
 };
-var FilterBlobItem = {
+const FilterBlobItem = {
     serializedName: "FilterBlobItem",
     xmlName: "Blob",
     type: {
@@ -64265,7 +63038,7 @@ var FilterBlobItem = {
         }
     }
 };
-var BlobTags = {
+const BlobTags = {
     serializedName: "BlobTags",
     xmlName: "Tags",
     type: {
@@ -64291,7 +63064,7 @@ var BlobTags = {
         }
     }
 };
-var BlobTag = {
+const BlobTag = {
     serializedName: "BlobTag",
     xmlName: "Tag",
     type: {
@@ -64317,7 +63090,7 @@ var BlobTag = {
         }
     }
 };
-var SignedIdentifier = {
+const SignedIdentifier = {
     serializedName: "SignedIdentifier",
     xmlName: "SignedIdentifier",
     type: {
@@ -64343,7 +63116,7 @@ var SignedIdentifier = {
         }
     }
 };
-var AccessPolicy = {
+const AccessPolicy = {
     serializedName: "AccessPolicy",
     type: {
         name: "Composite",
@@ -64373,7 +63146,7 @@ var AccessPolicy = {
         }
     }
 };
-var ListBlobsFlatSegmentResponse = {
+const ListBlobsFlatSegmentResponse = {
     serializedName: "ListBlobsFlatSegmentResponse",
     xmlName: "EnumerationResults",
     type: {
@@ -64437,7 +63210,7 @@ var ListBlobsFlatSegmentResponse = {
         }
     }
 };
-var BlobFlatListSegment = {
+const BlobFlatListSegment = {
     serializedName: "BlobFlatListSegment",
     xmlName: "Blobs",
     type: {
@@ -64462,7 +63235,7 @@ var BlobFlatListSegment = {
         }
     }
 };
-var BlobItemInternal = {
+const BlobItemInternal = {
     serializedName: "BlobItemInternal",
     xmlName: "Blob",
     type: {
@@ -64542,7 +63315,7 @@ var BlobItemInternal = {
         }
     }
 };
-var BlobPropertiesInternal = {
+const BlobPropertiesInternal = {
     serializedName: "BlobPropertiesInternal",
     xmlName: "Properties",
     type: {
@@ -64845,7 +63618,7 @@ var BlobPropertiesInternal = {
         }
     }
 };
-var ListBlobsHierarchySegmentResponse = {
+const ListBlobsHierarchySegmentResponse = {
     serializedName: "ListBlobsHierarchySegmentResponse",
     xmlName: "EnumerationResults",
     type: {
@@ -64916,7 +63689,7 @@ var ListBlobsHierarchySegmentResponse = {
         }
     }
 };
-var BlobHierarchyListSegment = {
+const BlobHierarchyListSegment = {
     serializedName: "BlobHierarchyListSegment",
     xmlName: "Blobs",
     type: {
@@ -64955,7 +63728,7 @@ var BlobHierarchyListSegment = {
         }
     }
 };
-var BlobPrefix = {
+const BlobPrefix = {
     serializedName: "BlobPrefix",
     type: {
         name: "Composite",
@@ -64972,7 +63745,7 @@ var BlobPrefix = {
         }
     }
 };
-var DataLakeStorageError = {
+const DataLakeStorageError = {
     serializedName: "DataLakeStorageError",
     type: {
         name: "Composite",
@@ -64989,7 +63762,7 @@ var DataLakeStorageError = {
         }
     }
 };
-var DataLakeStorageErrorError = {
+const DataLakeStorageErrorError = {
     serializedName: "DataLakeStorageErrorError",
     type: {
         name: "Composite",
@@ -65012,7 +63785,7 @@ var DataLakeStorageErrorError = {
         }
     }
 };
-var BlockLookupList = {
+const BlockLookupList = {
     serializedName: "BlockLookupList",
     xmlName: "BlockList",
     type: {
@@ -65061,7 +63834,7 @@ var BlockLookupList = {
         }
     }
 };
-var BlockList = {
+const BlockList = {
     serializedName: "BlockList",
     type: {
         name: "Composite",
@@ -65100,7 +63873,7 @@ var BlockList = {
         }
     }
 };
-var Block = {
+const Block = {
     serializedName: "Block",
     type: {
         name: "Composite",
@@ -65125,7 +63898,7 @@ var Block = {
         }
     }
 };
-var PageList = {
+const PageList = {
     serializedName: "PageList",
     type: {
         name: "Composite",
@@ -65162,7 +63935,7 @@ var PageList = {
         }
     }
 };
-var PageRange = {
+const PageRange = {
     serializedName: "PageRange",
     xmlName: "PageRange",
     type: {
@@ -65188,7 +63961,7 @@ var PageRange = {
         }
     }
 };
-var ClearRange = {
+const ClearRange = {
     serializedName: "ClearRange",
     xmlName: "ClearRange",
     type: {
@@ -65214,7 +63987,7 @@ var ClearRange = {
         }
     }
 };
-var QueryRequest = {
+const QueryRequest = {
     serializedName: "QueryRequest",
     xmlName: "QueryRequest",
     type: {
@@ -65256,7 +64029,7 @@ var QueryRequest = {
         }
     }
 };
-var QuerySerialization = {
+const QuerySerialization = {
     serializedName: "QuerySerialization",
     type: {
         name: "Composite",
@@ -65273,7 +64046,7 @@ var QuerySerialization = {
         }
     }
 };
-var QueryFormat = {
+const QueryFormat = {
     serializedName: "QueryFormat",
     type: {
         name: "Composite",
@@ -65314,7 +64087,7 @@ var QueryFormat = {
         }
     }
 };
-var DelimitedTextConfiguration = {
+const DelimitedTextConfiguration = {
     serializedName: "DelimitedTextConfiguration",
     xmlName: "DelimitedTextConfiguration",
     type: {
@@ -65364,7 +64137,7 @@ var DelimitedTextConfiguration = {
         }
     }
 };
-var JsonTextConfiguration = {
+const JsonTextConfiguration = {
     serializedName: "JsonTextConfiguration",
     xmlName: "JsonTextConfiguration",
     type: {
@@ -65382,7 +64155,7 @@ var JsonTextConfiguration = {
         }
     }
 };
-var ArrowConfiguration = {
+const ArrowConfiguration = {
     serializedName: "ArrowConfiguration",
     xmlName: "ArrowConfiguration",
     type: {
@@ -65408,7 +64181,7 @@ var ArrowConfiguration = {
         }
     }
 };
-var ArrowField = {
+const ArrowField = {
     serializedName: "ArrowField",
     xmlName: "Field",
     type: {
@@ -65447,7 +64220,7 @@ var ArrowField = {
         }
     }
 };
-var ServiceSetPropertiesHeaders = {
+const ServiceSetPropertiesHeaders = {
     serializedName: "Service_setPropertiesHeaders",
     type: {
         name: "Composite",
@@ -65484,7 +64257,7 @@ var ServiceSetPropertiesHeaders = {
         }
     }
 };
-var ServiceSetPropertiesExceptionHeaders = {
+const ServiceSetPropertiesExceptionHeaders = {
     serializedName: "Service_setPropertiesExceptionHeaders",
     type: {
         name: "Composite",
@@ -65500,7 +64273,7 @@ var ServiceSetPropertiesExceptionHeaders = {
         }
     }
 };
-var ServiceGetPropertiesHeaders = {
+const ServiceGetPropertiesHeaders = {
     serializedName: "Service_getPropertiesHeaders",
     type: {
         name: "Composite",
@@ -65537,7 +64310,7 @@ var ServiceGetPropertiesHeaders = {
         }
     }
 };
-var ServiceGetPropertiesExceptionHeaders = {
+const ServiceGetPropertiesExceptionHeaders = {
     serializedName: "Service_getPropertiesExceptionHeaders",
     type: {
         name: "Composite",
@@ -65553,7 +64326,7 @@ var ServiceGetPropertiesExceptionHeaders = {
         }
     }
 };
-var ServiceGetStatisticsHeaders = {
+const ServiceGetStatisticsHeaders = {
     serializedName: "Service_getStatisticsHeaders",
     type: {
         name: "Composite",
@@ -65597,7 +64370,7 @@ var ServiceGetStatisticsHeaders = {
         }
     }
 };
-var ServiceGetStatisticsExceptionHeaders = {
+const ServiceGetStatisticsExceptionHeaders = {
     serializedName: "Service_getStatisticsExceptionHeaders",
     type: {
         name: "Composite",
@@ -65613,7 +64386,7 @@ var ServiceGetStatisticsExceptionHeaders = {
         }
     }
 };
-var ServiceListContainersSegmentHeaders = {
+const ServiceListContainersSegmentHeaders = {
     serializedName: "Service_listContainersSegmentHeaders",
     type: {
         name: "Composite",
@@ -65650,7 +64423,7 @@ var ServiceListContainersSegmentHeaders = {
         }
     }
 };
-var ServiceListContainersSegmentExceptionHeaders = {
+const ServiceListContainersSegmentExceptionHeaders = {
     serializedName: "Service_listContainersSegmentExceptionHeaders",
     type: {
         name: "Composite",
@@ -65666,7 +64439,7 @@ var ServiceListContainersSegmentExceptionHeaders = {
         }
     }
 };
-var ServiceGetUserDelegationKeyHeaders = {
+const ServiceGetUserDelegationKeyHeaders = {
     serializedName: "Service_getUserDelegationKeyHeaders",
     type: {
         name: "Composite",
@@ -65710,7 +64483,7 @@ var ServiceGetUserDelegationKeyHeaders = {
         }
     }
 };
-var ServiceGetUserDelegationKeyExceptionHeaders = {
+const ServiceGetUserDelegationKeyExceptionHeaders = {
     serializedName: "Service_getUserDelegationKeyExceptionHeaders",
     type: {
         name: "Composite",
@@ -65726,7 +64499,7 @@ var ServiceGetUserDelegationKeyExceptionHeaders = {
         }
     }
 };
-var ServiceGetAccountInfoHeaders = {
+const ServiceGetAccountInfoHeaders = {
     serializedName: "Service_getAccountInfoHeaders",
     type: {
         name: "Composite",
@@ -65805,7 +64578,7 @@ var ServiceGetAccountInfoHeaders = {
         }
     }
 };
-var ServiceGetAccountInfoExceptionHeaders = {
+const ServiceGetAccountInfoExceptionHeaders = {
     serializedName: "Service_getAccountInfoExceptionHeaders",
     type: {
         name: "Composite",
@@ -65821,7 +64594,7 @@ var ServiceGetAccountInfoExceptionHeaders = {
         }
     }
 };
-var ServiceSubmitBatchHeaders = {
+const ServiceSubmitBatchHeaders = {
     serializedName: "Service_submitBatchHeaders",
     type: {
         name: "Composite",
@@ -65865,7 +64638,7 @@ var ServiceSubmitBatchHeaders = {
         }
     }
 };
-var ServiceSubmitBatchExceptionHeaders = {
+const ServiceSubmitBatchExceptionHeaders = {
     serializedName: "Service_submitBatchExceptionHeaders",
     type: {
         name: "Composite",
@@ -65881,7 +64654,7 @@ var ServiceSubmitBatchExceptionHeaders = {
         }
     }
 };
-var ServiceFilterBlobsHeaders = {
+const ServiceFilterBlobsHeaders = {
     serializedName: "Service_filterBlobsHeaders",
     type: {
         name: "Composite",
@@ -65925,7 +64698,7 @@ var ServiceFilterBlobsHeaders = {
         }
     }
 };
-var ServiceFilterBlobsExceptionHeaders = {
+const ServiceFilterBlobsExceptionHeaders = {
     serializedName: "Service_filterBlobsExceptionHeaders",
     type: {
         name: "Composite",
@@ -65941,7 +64714,7 @@ var ServiceFilterBlobsExceptionHeaders = {
         }
     }
 };
-var ContainerCreateHeaders = {
+const ContainerCreateHeaders = {
     serializedName: "Container_createHeaders",
     type: {
         name: "Composite",
@@ -65999,7 +64772,7 @@ var ContainerCreateHeaders = {
         }
     }
 };
-var ContainerCreateExceptionHeaders = {
+const ContainerCreateExceptionHeaders = {
     serializedName: "Container_createExceptionHeaders",
     type: {
         name: "Composite",
@@ -66015,7 +64788,7 @@ var ContainerCreateExceptionHeaders = {
         }
     }
 };
-var ContainerGetPropertiesHeaders = {
+const ContainerGetPropertiesHeaders = {
     serializedName: "Container_getPropertiesHeaders",
     type: {
         name: "Composite",
@@ -66148,7 +64921,7 @@ var ContainerGetPropertiesHeaders = {
         }
     }
 };
-var ContainerGetPropertiesExceptionHeaders = {
+const ContainerGetPropertiesExceptionHeaders = {
     serializedName: "Container_getPropertiesExceptionHeaders",
     type: {
         name: "Composite",
@@ -66164,7 +64937,7 @@ var ContainerGetPropertiesExceptionHeaders = {
         }
     }
 };
-var ContainerDeleteHeaders = {
+const ContainerDeleteHeaders = {
     serializedName: "Container_deleteHeaders",
     type: {
         name: "Composite",
@@ -66208,7 +64981,7 @@ var ContainerDeleteHeaders = {
         }
     }
 };
-var ContainerDeleteExceptionHeaders = {
+const ContainerDeleteExceptionHeaders = {
     serializedName: "Container_deleteExceptionHeaders",
     type: {
         name: "Composite",
@@ -66224,7 +64997,7 @@ var ContainerDeleteExceptionHeaders = {
         }
     }
 };
-var ContainerSetMetadataHeaders = {
+const ContainerSetMetadataHeaders = {
     serializedName: "Container_setMetadataHeaders",
     type: {
         name: "Composite",
@@ -66282,7 +65055,7 @@ var ContainerSetMetadataHeaders = {
         }
     }
 };
-var ContainerSetMetadataExceptionHeaders = {
+const ContainerSetMetadataExceptionHeaders = {
     serializedName: "Container_setMetadataExceptionHeaders",
     type: {
         name: "Composite",
@@ -66298,7 +65071,7 @@ var ContainerSetMetadataExceptionHeaders = {
         }
     }
 };
-var ContainerGetAccessPolicyHeaders = {
+const ContainerGetAccessPolicyHeaders = {
     serializedName: "Container_getAccessPolicyHeaders",
     type: {
         name: "Composite",
@@ -66364,7 +65137,7 @@ var ContainerGetAccessPolicyHeaders = {
         }
     }
 };
-var ContainerGetAccessPolicyExceptionHeaders = {
+const ContainerGetAccessPolicyExceptionHeaders = {
     serializedName: "Container_getAccessPolicyExceptionHeaders",
     type: {
         name: "Composite",
@@ -66380,7 +65153,7 @@ var ContainerGetAccessPolicyExceptionHeaders = {
         }
     }
 };
-var ContainerSetAccessPolicyHeaders = {
+const ContainerSetAccessPolicyHeaders = {
     serializedName: "Container_setAccessPolicyHeaders",
     type: {
         name: "Composite",
@@ -66438,7 +65211,7 @@ var ContainerSetAccessPolicyHeaders = {
         }
     }
 };
-var ContainerSetAccessPolicyExceptionHeaders = {
+const ContainerSetAccessPolicyExceptionHeaders = {
     serializedName: "Container_setAccessPolicyExceptionHeaders",
     type: {
         name: "Composite",
@@ -66454,7 +65227,7 @@ var ContainerSetAccessPolicyExceptionHeaders = {
         }
     }
 };
-var ContainerRestoreHeaders = {
+const ContainerRestoreHeaders = {
     serializedName: "Container_restoreHeaders",
     type: {
         name: "Composite",
@@ -66498,7 +65271,7 @@ var ContainerRestoreHeaders = {
         }
     }
 };
-var ContainerRestoreExceptionHeaders = {
+const ContainerRestoreExceptionHeaders = {
     serializedName: "Container_restoreExceptionHeaders",
     type: {
         name: "Composite",
@@ -66514,7 +65287,7 @@ var ContainerRestoreExceptionHeaders = {
         }
     }
 };
-var ContainerRenameHeaders = {
+const ContainerRenameHeaders = {
     serializedName: "Container_renameHeaders",
     type: {
         name: "Composite",
@@ -66558,7 +65331,7 @@ var ContainerRenameHeaders = {
         }
     }
 };
-var ContainerRenameExceptionHeaders = {
+const ContainerRenameExceptionHeaders = {
     serializedName: "Container_renameExceptionHeaders",
     type: {
         name: "Composite",
@@ -66574,7 +65347,7 @@ var ContainerRenameExceptionHeaders = {
         }
     }
 };
-var ContainerSubmitBatchHeaders = {
+const ContainerSubmitBatchHeaders = {
     serializedName: "Container_submitBatchHeaders",
     type: {
         name: "Composite",
@@ -66604,7 +65377,7 @@ var ContainerSubmitBatchHeaders = {
         }
     }
 };
-var ContainerSubmitBatchExceptionHeaders = {
+const ContainerSubmitBatchExceptionHeaders = {
     serializedName: "Container_submitBatchExceptionHeaders",
     type: {
         name: "Composite",
@@ -66620,7 +65393,7 @@ var ContainerSubmitBatchExceptionHeaders = {
         }
     }
 };
-var ContainerAcquireLeaseHeaders = {
+const ContainerAcquireLeaseHeaders = {
     serializedName: "Container_acquireLeaseHeaders",
     type: {
         name: "Composite",
@@ -66678,7 +65451,7 @@ var ContainerAcquireLeaseHeaders = {
         }
     }
 };
-var ContainerAcquireLeaseExceptionHeaders = {
+const ContainerAcquireLeaseExceptionHeaders = {
     serializedName: "Container_acquireLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -66694,7 +65467,7 @@ var ContainerAcquireLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerReleaseLeaseHeaders = {
+const ContainerReleaseLeaseHeaders = {
     serializedName: "Container_releaseLeaseHeaders",
     type: {
         name: "Composite",
@@ -66745,7 +65518,7 @@ var ContainerReleaseLeaseHeaders = {
         }
     }
 };
-var ContainerReleaseLeaseExceptionHeaders = {
+const ContainerReleaseLeaseExceptionHeaders = {
     serializedName: "Container_releaseLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -66761,7 +65534,7 @@ var ContainerReleaseLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerRenewLeaseHeaders = {
+const ContainerRenewLeaseHeaders = {
     serializedName: "Container_renewLeaseHeaders",
     type: {
         name: "Composite",
@@ -66819,7 +65592,7 @@ var ContainerRenewLeaseHeaders = {
         }
     }
 };
-var ContainerRenewLeaseExceptionHeaders = {
+const ContainerRenewLeaseExceptionHeaders = {
     serializedName: "Container_renewLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -66835,7 +65608,7 @@ var ContainerRenewLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerBreakLeaseHeaders = {
+const ContainerBreakLeaseHeaders = {
     serializedName: "Container_breakLeaseHeaders",
     type: {
         name: "Composite",
@@ -66893,7 +65666,7 @@ var ContainerBreakLeaseHeaders = {
         }
     }
 };
-var ContainerBreakLeaseExceptionHeaders = {
+const ContainerBreakLeaseExceptionHeaders = {
     serializedName: "Container_breakLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -66909,7 +65682,7 @@ var ContainerBreakLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerChangeLeaseHeaders = {
+const ContainerChangeLeaseHeaders = {
     serializedName: "Container_changeLeaseHeaders",
     type: {
         name: "Composite",
@@ -66967,7 +65740,7 @@ var ContainerChangeLeaseHeaders = {
         }
     }
 };
-var ContainerChangeLeaseExceptionHeaders = {
+const ContainerChangeLeaseExceptionHeaders = {
     serializedName: "Container_changeLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -66983,7 +65756,7 @@ var ContainerChangeLeaseExceptionHeaders = {
         }
     }
 };
-var ContainerListBlobFlatSegmentHeaders = {
+const ContainerListBlobFlatSegmentHeaders = {
     serializedName: "Container_listBlobFlatSegmentHeaders",
     type: {
         name: "Composite",
@@ -67034,7 +65807,7 @@ var ContainerListBlobFlatSegmentHeaders = {
         }
     }
 };
-var ContainerListBlobFlatSegmentExceptionHeaders = {
+const ContainerListBlobFlatSegmentExceptionHeaders = {
     serializedName: "Container_listBlobFlatSegmentExceptionHeaders",
     type: {
         name: "Composite",
@@ -67050,7 +65823,7 @@ var ContainerListBlobFlatSegmentExceptionHeaders = {
         }
     }
 };
-var ContainerListBlobHierarchySegmentHeaders = {
+const ContainerListBlobHierarchySegmentHeaders = {
     serializedName: "Container_listBlobHierarchySegmentHeaders",
     type: {
         name: "Composite",
@@ -67101,7 +65874,7 @@ var ContainerListBlobHierarchySegmentHeaders = {
         }
     }
 };
-var ContainerListBlobHierarchySegmentExceptionHeaders = {
+const ContainerListBlobHierarchySegmentExceptionHeaders = {
     serializedName: "Container_listBlobHierarchySegmentExceptionHeaders",
     type: {
         name: "Composite",
@@ -67117,7 +65890,7 @@ var ContainerListBlobHierarchySegmentExceptionHeaders = {
         }
     }
 };
-var ContainerGetAccountInfoHeaders = {
+const ContainerGetAccountInfoHeaders = {
     serializedName: "Container_getAccountInfoHeaders",
     type: {
         name: "Composite",
@@ -67182,7 +65955,7 @@ var ContainerGetAccountInfoHeaders = {
         }
     }
 };
-var ContainerGetAccountInfoExceptionHeaders = {
+const ContainerGetAccountInfoExceptionHeaders = {
     serializedName: "Container_getAccountInfoExceptionHeaders",
     type: {
         name: "Composite",
@@ -67198,7 +65971,7 @@ var ContainerGetAccountInfoExceptionHeaders = {
         }
     }
 };
-var DirectoryCreateHeaders = {
+const DirectoryCreateHeaders = {
     serializedName: "Directory_createHeaders",
     type: {
         name: "Composite",
@@ -67256,7 +66029,7 @@ var DirectoryCreateHeaders = {
         }
     }
 };
-var DirectoryCreateExceptionHeaders = {
+const DirectoryCreateExceptionHeaders = {
     serializedName: "Directory_createExceptionHeaders",
     type: {
         name: "Composite",
@@ -67286,7 +66059,7 @@ var DirectoryCreateExceptionHeaders = {
         }
     }
 };
-var DirectoryRenameHeaders = {
+const DirectoryRenameHeaders = {
     serializedName: "Directory_renameHeaders",
     type: {
         name: "Composite",
@@ -67351,7 +66124,7 @@ var DirectoryRenameHeaders = {
         }
     }
 };
-var DirectoryRenameExceptionHeaders = {
+const DirectoryRenameExceptionHeaders = {
     serializedName: "Directory_renameExceptionHeaders",
     type: {
         name: "Composite",
@@ -67381,7 +66154,7 @@ var DirectoryRenameExceptionHeaders = {
         }
     }
 };
-var DirectoryDeleteHeaders = {
+const DirectoryDeleteHeaders = {
     serializedName: "Directory_deleteHeaders",
     type: {
         name: "Composite",
@@ -67425,7 +66198,7 @@ var DirectoryDeleteHeaders = {
         }
     }
 };
-var DirectoryDeleteExceptionHeaders = {
+const DirectoryDeleteExceptionHeaders = {
     serializedName: "Directory_deleteExceptionHeaders",
     type: {
         name: "Composite",
@@ -67455,7 +66228,7 @@ var DirectoryDeleteExceptionHeaders = {
         }
     }
 };
-var DirectorySetAccessControlHeaders = {
+const DirectorySetAccessControlHeaders = {
     serializedName: "Directory_setAccessControlHeaders",
     type: {
         name: "Composite",
@@ -67499,7 +66272,7 @@ var DirectorySetAccessControlHeaders = {
         }
     }
 };
-var DirectorySetAccessControlExceptionHeaders = {
+const DirectorySetAccessControlExceptionHeaders = {
     serializedName: "Directory_setAccessControlExceptionHeaders",
     type: {
         name: "Composite",
@@ -67529,7 +66302,7 @@ var DirectorySetAccessControlExceptionHeaders = {
         }
     }
 };
-var DirectoryGetAccessControlHeaders = {
+const DirectoryGetAccessControlHeaders = {
     serializedName: "Directory_getAccessControlHeaders",
     type: {
         name: "Composite",
@@ -67601,7 +66374,7 @@ var DirectoryGetAccessControlHeaders = {
         }
     }
 };
-var DirectoryGetAccessControlExceptionHeaders = {
+const DirectoryGetAccessControlExceptionHeaders = {
     serializedName: "Directory_getAccessControlExceptionHeaders",
     type: {
         name: "Composite",
@@ -67631,7 +66404,7 @@ var DirectoryGetAccessControlExceptionHeaders = {
         }
     }
 };
-var BlobDownloadHeaders = {
+const BlobDownloadHeaders = {
     serializedName: "Blob_downloadHeaders",
     type: {
         name: "Composite",
@@ -67942,7 +66715,7 @@ var BlobDownloadHeaders = {
         }
     }
 };
-var BlobDownloadExceptionHeaders = {
+const BlobDownloadExceptionHeaders = {
     serializedName: "Blob_downloadExceptionHeaders",
     type: {
         name: "Composite",
@@ -67958,7 +66731,7 @@ var BlobDownloadExceptionHeaders = {
         }
     }
 };
-var BlobGetPropertiesHeaders = {
+const BlobGetPropertiesHeaders = {
     serializedName: "Blob_getPropertiesHeaders",
     type: {
         name: "Composite",
@@ -68312,7 +67085,7 @@ var BlobGetPropertiesHeaders = {
         }
     }
 };
-var BlobGetPropertiesExceptionHeaders = {
+const BlobGetPropertiesExceptionHeaders = {
     serializedName: "Blob_getPropertiesExceptionHeaders",
     type: {
         name: "Composite",
@@ -68328,7 +67101,7 @@ var BlobGetPropertiesExceptionHeaders = {
         }
     }
 };
-var BlobDeleteHeaders = {
+const BlobDeleteHeaders = {
     serializedName: "Blob_deleteHeaders",
     type: {
         name: "Composite",
@@ -68372,7 +67145,7 @@ var BlobDeleteHeaders = {
         }
     }
 };
-var BlobDeleteExceptionHeaders = {
+const BlobDeleteExceptionHeaders = {
     serializedName: "Blob_deleteExceptionHeaders",
     type: {
         name: "Composite",
@@ -68388,7 +67161,7 @@ var BlobDeleteExceptionHeaders = {
         }
     }
 };
-var BlobSetAccessControlHeaders = {
+const BlobSetAccessControlHeaders = {
     serializedName: "Blob_setAccessControlHeaders",
     type: {
         name: "Composite",
@@ -68432,7 +67205,7 @@ var BlobSetAccessControlHeaders = {
         }
     }
 };
-var BlobSetAccessControlExceptionHeaders = {
+const BlobSetAccessControlExceptionHeaders = {
     serializedName: "Blob_setAccessControlExceptionHeaders",
     type: {
         name: "Composite",
@@ -68462,7 +67235,7 @@ var BlobSetAccessControlExceptionHeaders = {
         }
     }
 };
-var BlobGetAccessControlHeaders = {
+const BlobGetAccessControlHeaders = {
     serializedName: "Blob_getAccessControlHeaders",
     type: {
         name: "Composite",
@@ -68534,7 +67307,7 @@ var BlobGetAccessControlHeaders = {
         }
     }
 };
-var BlobGetAccessControlExceptionHeaders = {
+const BlobGetAccessControlExceptionHeaders = {
     serializedName: "Blob_getAccessControlExceptionHeaders",
     type: {
         name: "Composite",
@@ -68564,7 +67337,7 @@ var BlobGetAccessControlExceptionHeaders = {
         }
     }
 };
-var BlobRenameHeaders = {
+const BlobRenameHeaders = {
     serializedName: "Blob_renameHeaders",
     type: {
         name: "Composite",
@@ -68622,7 +67395,7 @@ var BlobRenameHeaders = {
         }
     }
 };
-var BlobRenameExceptionHeaders = {
+const BlobRenameExceptionHeaders = {
     serializedName: "Blob_renameExceptionHeaders",
     type: {
         name: "Composite",
@@ -68652,7 +67425,7 @@ var BlobRenameExceptionHeaders = {
         }
     }
 };
-var BlobUndeleteHeaders = {
+const BlobUndeleteHeaders = {
     serializedName: "Blob_undeleteHeaders",
     type: {
         name: "Composite",
@@ -68696,7 +67469,7 @@ var BlobUndeleteHeaders = {
         }
     }
 };
-var BlobUndeleteExceptionHeaders = {
+const BlobUndeleteExceptionHeaders = {
     serializedName: "Blob_undeleteExceptionHeaders",
     type: {
         name: "Composite",
@@ -68712,7 +67485,7 @@ var BlobUndeleteExceptionHeaders = {
         }
     }
 };
-var BlobSetExpiryHeaders = {
+const BlobSetExpiryHeaders = {
     serializedName: "Blob_setExpiryHeaders",
     type: {
         name: "Composite",
@@ -68763,7 +67536,7 @@ var BlobSetExpiryHeaders = {
         }
     }
 };
-var BlobSetExpiryExceptionHeaders = {
+const BlobSetExpiryExceptionHeaders = {
     serializedName: "Blob_setExpiryExceptionHeaders",
     type: {
         name: "Composite",
@@ -68779,7 +67552,7 @@ var BlobSetExpiryExceptionHeaders = {
         }
     }
 };
-var BlobSetHttpHeadersHeaders = {
+const BlobSetHttpHeadersHeaders = {
     serializedName: "Blob_setHttpHeadersHeaders",
     type: {
         name: "Composite",
@@ -68844,7 +67617,7 @@ var BlobSetHttpHeadersHeaders = {
         }
     }
 };
-var BlobSetHttpHeadersExceptionHeaders = {
+const BlobSetHttpHeadersExceptionHeaders = {
     serializedName: "Blob_setHttpHeadersExceptionHeaders",
     type: {
         name: "Composite",
@@ -68860,7 +67633,7 @@ var BlobSetHttpHeadersExceptionHeaders = {
         }
     }
 };
-var BlobSetMetadataHeaders = {
+const BlobSetMetadataHeaders = {
     serializedName: "Blob_setMetadataHeaders",
     type: {
         name: "Composite",
@@ -68946,7 +67719,7 @@ var BlobSetMetadataHeaders = {
         }
     }
 };
-var BlobSetMetadataExceptionHeaders = {
+const BlobSetMetadataExceptionHeaders = {
     serializedName: "Blob_setMetadataExceptionHeaders",
     type: {
         name: "Composite",
@@ -68962,7 +67735,7 @@ var BlobSetMetadataExceptionHeaders = {
         }
     }
 };
-var BlobAcquireLeaseHeaders = {
+const BlobAcquireLeaseHeaders = {
     serializedName: "Blob_acquireLeaseHeaders",
     type: {
         name: "Composite",
@@ -69020,7 +67793,7 @@ var BlobAcquireLeaseHeaders = {
         }
     }
 };
-var BlobAcquireLeaseExceptionHeaders = {
+const BlobAcquireLeaseExceptionHeaders = {
     serializedName: "Blob_acquireLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -69036,7 +67809,7 @@ var BlobAcquireLeaseExceptionHeaders = {
         }
     }
 };
-var BlobReleaseLeaseHeaders = {
+const BlobReleaseLeaseHeaders = {
     serializedName: "Blob_releaseLeaseHeaders",
     type: {
         name: "Composite",
@@ -69087,7 +67860,7 @@ var BlobReleaseLeaseHeaders = {
         }
     }
 };
-var BlobReleaseLeaseExceptionHeaders = {
+const BlobReleaseLeaseExceptionHeaders = {
     serializedName: "Blob_releaseLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -69103,7 +67876,7 @@ var BlobReleaseLeaseExceptionHeaders = {
         }
     }
 };
-var BlobRenewLeaseHeaders = {
+const BlobRenewLeaseHeaders = {
     serializedName: "Blob_renewLeaseHeaders",
     type: {
         name: "Composite",
@@ -69161,7 +67934,7 @@ var BlobRenewLeaseHeaders = {
         }
     }
 };
-var BlobRenewLeaseExceptionHeaders = {
+const BlobRenewLeaseExceptionHeaders = {
     serializedName: "Blob_renewLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -69177,7 +67950,7 @@ var BlobRenewLeaseExceptionHeaders = {
         }
     }
 };
-var BlobChangeLeaseHeaders = {
+const BlobChangeLeaseHeaders = {
     serializedName: "Blob_changeLeaseHeaders",
     type: {
         name: "Composite",
@@ -69235,7 +68008,7 @@ var BlobChangeLeaseHeaders = {
         }
     }
 };
-var BlobChangeLeaseExceptionHeaders = {
+const BlobChangeLeaseExceptionHeaders = {
     serializedName: "Blob_changeLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -69251,7 +68024,7 @@ var BlobChangeLeaseExceptionHeaders = {
         }
     }
 };
-var BlobBreakLeaseHeaders = {
+const BlobBreakLeaseHeaders = {
     serializedName: "Blob_breakLeaseHeaders",
     type: {
         name: "Composite",
@@ -69309,7 +68082,7 @@ var BlobBreakLeaseHeaders = {
         }
     }
 };
-var BlobBreakLeaseExceptionHeaders = {
+const BlobBreakLeaseExceptionHeaders = {
     serializedName: "Blob_breakLeaseExceptionHeaders",
     type: {
         name: "Composite",
@@ -69325,7 +68098,7 @@ var BlobBreakLeaseExceptionHeaders = {
         }
     }
 };
-var BlobCreateSnapshotHeaders = {
+const BlobCreateSnapshotHeaders = {
     serializedName: "Blob_createSnapshotHeaders",
     type: {
         name: "Composite",
@@ -69404,7 +68177,7 @@ var BlobCreateSnapshotHeaders = {
         }
     }
 };
-var BlobCreateSnapshotExceptionHeaders = {
+const BlobCreateSnapshotExceptionHeaders = {
     serializedName: "Blob_createSnapshotExceptionHeaders",
     type: {
         name: "Composite",
@@ -69420,7 +68193,7 @@ var BlobCreateSnapshotExceptionHeaders = {
         }
     }
 };
-var BlobStartCopyFromURLHeaders = {
+const BlobStartCopyFromURLHeaders = {
     serializedName: "Blob_startCopyFromURLHeaders",
     type: {
         name: "Composite",
@@ -69500,7 +68273,7 @@ var BlobStartCopyFromURLHeaders = {
         }
     }
 };
-var BlobStartCopyFromURLExceptionHeaders = {
+const BlobStartCopyFromURLExceptionHeaders = {
     serializedName: "Blob_startCopyFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -69516,7 +68289,7 @@ var BlobStartCopyFromURLExceptionHeaders = {
         }
     }
 };
-var BlobCopyFromURLHeaders = {
+const BlobCopyFromURLHeaders = {
     serializedName: "Blob_copyFromURLHeaders",
     type: {
         name: "Composite",
@@ -69610,7 +68383,7 @@ var BlobCopyFromURLHeaders = {
         }
     }
 };
-var BlobCopyFromURLExceptionHeaders = {
+const BlobCopyFromURLExceptionHeaders = {
     serializedName: "Blob_copyFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -69626,7 +68399,7 @@ var BlobCopyFromURLExceptionHeaders = {
         }
     }
 };
-var BlobAbortCopyFromURLHeaders = {
+const BlobAbortCopyFromURLHeaders = {
     serializedName: "Blob_abortCopyFromURLHeaders",
     type: {
         name: "Composite",
@@ -69670,7 +68443,7 @@ var BlobAbortCopyFromURLHeaders = {
         }
     }
 };
-var BlobAbortCopyFromURLExceptionHeaders = {
+const BlobAbortCopyFromURLExceptionHeaders = {
     serializedName: "Blob_abortCopyFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -69686,7 +68459,7 @@ var BlobAbortCopyFromURLExceptionHeaders = {
         }
     }
 };
-var BlobSetTierHeaders = {
+const BlobSetTierHeaders = {
     serializedName: "Blob_setTierHeaders",
     type: {
         name: "Composite",
@@ -69723,7 +68496,7 @@ var BlobSetTierHeaders = {
         }
     }
 };
-var BlobSetTierExceptionHeaders = {
+const BlobSetTierExceptionHeaders = {
     serializedName: "Blob_setTierExceptionHeaders",
     type: {
         name: "Composite",
@@ -69739,7 +68512,7 @@ var BlobSetTierExceptionHeaders = {
         }
     }
 };
-var BlobGetAccountInfoHeaders = {
+const BlobGetAccountInfoHeaders = {
     serializedName: "Blob_getAccountInfoHeaders",
     type: {
         name: "Composite",
@@ -69804,7 +68577,7 @@ var BlobGetAccountInfoHeaders = {
         }
     }
 };
-var BlobGetAccountInfoExceptionHeaders = {
+const BlobGetAccountInfoExceptionHeaders = {
     serializedName: "Blob_getAccountInfoExceptionHeaders",
     type: {
         name: "Composite",
@@ -69820,7 +68593,7 @@ var BlobGetAccountInfoExceptionHeaders = {
         }
     }
 };
-var BlobQueryHeaders = {
+const BlobQueryHeaders = {
     serializedName: "Blob_queryHeaders",
     type: {
         name: "Composite",
@@ -70079,7 +68852,7 @@ var BlobQueryHeaders = {
         }
     }
 };
-var BlobQueryExceptionHeaders = {
+const BlobQueryExceptionHeaders = {
     serializedName: "Blob_queryExceptionHeaders",
     type: {
         name: "Composite",
@@ -70095,7 +68868,7 @@ var BlobQueryExceptionHeaders = {
         }
     }
 };
-var BlobGetTagsHeaders = {
+const BlobGetTagsHeaders = {
     serializedName: "Blob_getTagsHeaders",
     type: {
         name: "Composite",
@@ -70139,7 +68912,7 @@ var BlobGetTagsHeaders = {
         }
     }
 };
-var BlobGetTagsExceptionHeaders = {
+const BlobGetTagsExceptionHeaders = {
     serializedName: "Blob_getTagsExceptionHeaders",
     type: {
         name: "Composite",
@@ -70155,7 +68928,7 @@ var BlobGetTagsExceptionHeaders = {
         }
     }
 };
-var BlobSetTagsHeaders = {
+const BlobSetTagsHeaders = {
     serializedName: "Blob_setTagsHeaders",
     type: {
         name: "Composite",
@@ -70199,7 +68972,7 @@ var BlobSetTagsHeaders = {
         }
     }
 };
-var BlobSetTagsExceptionHeaders = {
+const BlobSetTagsExceptionHeaders = {
     serializedName: "Blob_setTagsExceptionHeaders",
     type: {
         name: "Composite",
@@ -70215,7 +68988,7 @@ var BlobSetTagsExceptionHeaders = {
         }
     }
 };
-var PageBlobCreateHeaders = {
+const PageBlobCreateHeaders = {
     serializedName: "PageBlob_createHeaders",
     type: {
         name: "Composite",
@@ -70308,7 +69081,7 @@ var PageBlobCreateHeaders = {
         }
     }
 };
-var PageBlobCreateExceptionHeaders = {
+const PageBlobCreateExceptionHeaders = {
     serializedName: "PageBlob_createExceptionHeaders",
     type: {
         name: "Composite",
@@ -70324,7 +69097,7 @@ var PageBlobCreateExceptionHeaders = {
         }
     }
 };
-var PageBlobUploadPagesHeaders = {
+const PageBlobUploadPagesHeaders = {
     serializedName: "PageBlob_uploadPagesHeaders",
     type: {
         name: "Composite",
@@ -70424,7 +69197,7 @@ var PageBlobUploadPagesHeaders = {
         }
     }
 };
-var PageBlobUploadPagesExceptionHeaders = {
+const PageBlobUploadPagesExceptionHeaders = {
     serializedName: "PageBlob_uploadPagesExceptionHeaders",
     type: {
         name: "Composite",
@@ -70440,7 +69213,7 @@ var PageBlobUploadPagesExceptionHeaders = {
         }
     }
 };
-var PageBlobClearPagesHeaders = {
+const PageBlobClearPagesHeaders = {
     serializedName: "PageBlob_clearPagesHeaders",
     type: {
         name: "Composite",
@@ -70519,7 +69292,7 @@ var PageBlobClearPagesHeaders = {
         }
     }
 };
-var PageBlobClearPagesExceptionHeaders = {
+const PageBlobClearPagesExceptionHeaders = {
     serializedName: "PageBlob_clearPagesExceptionHeaders",
     type: {
         name: "Composite",
@@ -70535,7 +69308,7 @@ var PageBlobClearPagesExceptionHeaders = {
         }
     }
 };
-var PageBlobUploadPagesFromURLHeaders = {
+const PageBlobUploadPagesFromURLHeaders = {
     serializedName: "PageBlob_uploadPagesFromURLHeaders",
     type: {
         name: "Composite",
@@ -70628,7 +69401,7 @@ var PageBlobUploadPagesFromURLHeaders = {
         }
     }
 };
-var PageBlobUploadPagesFromURLExceptionHeaders = {
+const PageBlobUploadPagesFromURLExceptionHeaders = {
     serializedName: "PageBlob_uploadPagesFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -70644,7 +69417,7 @@ var PageBlobUploadPagesFromURLExceptionHeaders = {
         }
     }
 };
-var PageBlobGetPageRangesHeaders = {
+const PageBlobGetPageRangesHeaders = {
     serializedName: "PageBlob_getPageRangesHeaders",
     type: {
         name: "Composite",
@@ -70709,7 +69482,7 @@ var PageBlobGetPageRangesHeaders = {
         }
     }
 };
-var PageBlobGetPageRangesExceptionHeaders = {
+const PageBlobGetPageRangesExceptionHeaders = {
     serializedName: "PageBlob_getPageRangesExceptionHeaders",
     type: {
         name: "Composite",
@@ -70725,7 +69498,7 @@ var PageBlobGetPageRangesExceptionHeaders = {
         }
     }
 };
-var PageBlobGetPageRangesDiffHeaders = {
+const PageBlobGetPageRangesDiffHeaders = {
     serializedName: "PageBlob_getPageRangesDiffHeaders",
     type: {
         name: "Composite",
@@ -70790,7 +69563,7 @@ var PageBlobGetPageRangesDiffHeaders = {
         }
     }
 };
-var PageBlobGetPageRangesDiffExceptionHeaders = {
+const PageBlobGetPageRangesDiffExceptionHeaders = {
     serializedName: "PageBlob_getPageRangesDiffExceptionHeaders",
     type: {
         name: "Composite",
@@ -70806,7 +69579,7 @@ var PageBlobGetPageRangesDiffExceptionHeaders = {
         }
     }
 };
-var PageBlobResizeHeaders = {
+const PageBlobResizeHeaders = {
     serializedName: "PageBlob_resizeHeaders",
     type: {
         name: "Composite",
@@ -70871,7 +69644,7 @@ var PageBlobResizeHeaders = {
         }
     }
 };
-var PageBlobResizeExceptionHeaders = {
+const PageBlobResizeExceptionHeaders = {
     serializedName: "PageBlob_resizeExceptionHeaders",
     type: {
         name: "Composite",
@@ -70887,7 +69660,7 @@ var PageBlobResizeExceptionHeaders = {
         }
     }
 };
-var PageBlobUpdateSequenceNumberHeaders = {
+const PageBlobUpdateSequenceNumberHeaders = {
     serializedName: "PageBlob_updateSequenceNumberHeaders",
     type: {
         name: "Composite",
@@ -70952,7 +69725,7 @@ var PageBlobUpdateSequenceNumberHeaders = {
         }
     }
 };
-var PageBlobUpdateSequenceNumberExceptionHeaders = {
+const PageBlobUpdateSequenceNumberExceptionHeaders = {
     serializedName: "PageBlob_updateSequenceNumberExceptionHeaders",
     type: {
         name: "Composite",
@@ -70968,7 +69741,7 @@ var PageBlobUpdateSequenceNumberExceptionHeaders = {
         }
     }
 };
-var PageBlobCopyIncrementalHeaders = {
+const PageBlobCopyIncrementalHeaders = {
     serializedName: "PageBlob_copyIncrementalHeaders",
     type: {
         name: "Composite",
@@ -71041,7 +69814,7 @@ var PageBlobCopyIncrementalHeaders = {
         }
     }
 };
-var PageBlobCopyIncrementalExceptionHeaders = {
+const PageBlobCopyIncrementalExceptionHeaders = {
     serializedName: "PageBlob_copyIncrementalExceptionHeaders",
     type: {
         name: "Composite",
@@ -71057,7 +69830,7 @@ var PageBlobCopyIncrementalExceptionHeaders = {
         }
     }
 };
-var AppendBlobCreateHeaders = {
+const AppendBlobCreateHeaders = {
     serializedName: "AppendBlob_createHeaders",
     type: {
         name: "Composite",
@@ -71150,7 +69923,7 @@ var AppendBlobCreateHeaders = {
         }
     }
 };
-var AppendBlobCreateExceptionHeaders = {
+const AppendBlobCreateExceptionHeaders = {
     serializedName: "AppendBlob_createExceptionHeaders",
     type: {
         name: "Composite",
@@ -71166,7 +69939,7 @@ var AppendBlobCreateExceptionHeaders = {
         }
     }
 };
-var AppendBlobAppendBlockHeaders = {
+const AppendBlobAppendBlockHeaders = {
     serializedName: "AppendBlob_appendBlockHeaders",
     type: {
         name: "Composite",
@@ -71273,7 +70046,7 @@ var AppendBlobAppendBlockHeaders = {
         }
     }
 };
-var AppendBlobAppendBlockExceptionHeaders = {
+const AppendBlobAppendBlockExceptionHeaders = {
     serializedName: "AppendBlob_appendBlockExceptionHeaders",
     type: {
         name: "Composite",
@@ -71289,7 +70062,7 @@ var AppendBlobAppendBlockExceptionHeaders = {
         }
     }
 };
-var AppendBlobAppendBlockFromUrlHeaders = {
+const AppendBlobAppendBlockFromUrlHeaders = {
     serializedName: "AppendBlob_appendBlockFromUrlHeaders",
     type: {
         name: "Composite",
@@ -71389,7 +70162,7 @@ var AppendBlobAppendBlockFromUrlHeaders = {
         }
     }
 };
-var AppendBlobAppendBlockFromUrlExceptionHeaders = {
+const AppendBlobAppendBlockFromUrlExceptionHeaders = {
     serializedName: "AppendBlob_appendBlockFromUrlExceptionHeaders",
     type: {
         name: "Composite",
@@ -71405,7 +70178,7 @@ var AppendBlobAppendBlockFromUrlExceptionHeaders = {
         }
     }
 };
-var AppendBlobSealHeaders = {
+const AppendBlobSealHeaders = {
     serializedName: "AppendBlob_sealHeaders",
     type: {
         name: "Composite",
@@ -71463,7 +70236,7 @@ var AppendBlobSealHeaders = {
         }
     }
 };
-var AppendBlobSealExceptionHeaders = {
+const AppendBlobSealExceptionHeaders = {
     serializedName: "AppendBlob_sealExceptionHeaders",
     type: {
         name: "Composite",
@@ -71479,7 +70252,7 @@ var AppendBlobSealExceptionHeaders = {
         }
     }
 };
-var BlockBlobUploadHeaders = {
+const BlockBlobUploadHeaders = {
     serializedName: "BlockBlob_uploadHeaders",
     type: {
         name: "Composite",
@@ -71572,7 +70345,7 @@ var BlockBlobUploadHeaders = {
         }
     }
 };
-var BlockBlobUploadExceptionHeaders = {
+const BlockBlobUploadExceptionHeaders = {
     serializedName: "BlockBlob_uploadExceptionHeaders",
     type: {
         name: "Composite",
@@ -71588,7 +70361,7 @@ var BlockBlobUploadExceptionHeaders = {
         }
     }
 };
-var BlockBlobPutBlobFromUrlHeaders = {
+const BlockBlobPutBlobFromUrlHeaders = {
     serializedName: "BlockBlob_putBlobFromUrlHeaders",
     type: {
         name: "Composite",
@@ -71681,7 +70454,7 @@ var BlockBlobPutBlobFromUrlHeaders = {
         }
     }
 };
-var BlockBlobPutBlobFromUrlExceptionHeaders = {
+const BlockBlobPutBlobFromUrlExceptionHeaders = {
     serializedName: "BlockBlob_putBlobFromUrlExceptionHeaders",
     type: {
         name: "Composite",
@@ -71697,7 +70470,7 @@ var BlockBlobPutBlobFromUrlExceptionHeaders = {
         }
     }
 };
-var BlockBlobStageBlockHeaders = {
+const BlockBlobStageBlockHeaders = {
     serializedName: "BlockBlob_stageBlockHeaders",
     type: {
         name: "Composite",
@@ -71776,7 +70549,7 @@ var BlockBlobStageBlockHeaders = {
         }
     }
 };
-var BlockBlobStageBlockExceptionHeaders = {
+const BlockBlobStageBlockExceptionHeaders = {
     serializedName: "BlockBlob_stageBlockExceptionHeaders",
     type: {
         name: "Composite",
@@ -71792,7 +70565,7 @@ var BlockBlobStageBlockExceptionHeaders = {
         }
     }
 };
-var BlockBlobStageBlockFromURLHeaders = {
+const BlockBlobStageBlockFromURLHeaders = {
     serializedName: "BlockBlob_stageBlockFromURLHeaders",
     type: {
         name: "Composite",
@@ -71871,7 +70644,7 @@ var BlockBlobStageBlockFromURLHeaders = {
         }
     }
 };
-var BlockBlobStageBlockFromURLExceptionHeaders = {
+const BlockBlobStageBlockFromURLExceptionHeaders = {
     serializedName: "BlockBlob_stageBlockFromURLExceptionHeaders",
     type: {
         name: "Composite",
@@ -71887,7 +70660,7 @@ var BlockBlobStageBlockFromURLExceptionHeaders = {
         }
     }
 };
-var BlockBlobCommitBlockListHeaders = {
+const BlockBlobCommitBlockListHeaders = {
     serializedName: "BlockBlob_commitBlockListHeaders",
     type: {
         name: "Composite",
@@ -71987,7 +70760,7 @@ var BlockBlobCommitBlockListHeaders = {
         }
     }
 };
-var BlockBlobCommitBlockListExceptionHeaders = {
+const BlockBlobCommitBlockListExceptionHeaders = {
     serializedName: "BlockBlob_commitBlockListExceptionHeaders",
     type: {
         name: "Composite",
@@ -72003,7 +70776,7 @@ var BlockBlobCommitBlockListExceptionHeaders = {
         }
     }
 };
-var BlockBlobGetBlockListHeaders = {
+const BlockBlobGetBlockListHeaders = {
     serializedName: "BlockBlob_getBlockListHeaders",
     type: {
         name: "Composite",
@@ -72075,7 +70848,7 @@ var BlockBlobGetBlockListHeaders = {
         }
     }
 };
-var BlockBlobGetBlockListExceptionHeaders = {
+const BlockBlobGetBlockListExceptionHeaders = {
     serializedName: "BlockBlob_getBlockListExceptionHeaders",
     type: {
         name: "Composite",
@@ -72291,7 +71064,7 @@ var Mappers = /*#__PURE__*/Object.freeze({
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var contentType = {
+const contentType = {
     parameterPath: ["options", "contentType"],
     mapper: {
         defaultValue: "application/xml",
@@ -72302,11 +71075,11 @@ var contentType = {
         }
     }
 };
-var blobServiceProperties = {
+const blobServiceProperties = {
     parameterPath: "blobServiceProperties",
     mapper: BlobServiceProperties
 };
-var accept = {
+const accept = {
     parameterPath: "accept",
     mapper: {
         defaultValue: "application/xml",
@@ -72317,7 +71090,7 @@ var accept = {
         }
     }
 };
-var url = {
+const url = {
     parameterPath: "url",
     mapper: {
         serializedName: "url",
@@ -72329,7 +71102,7 @@ var url = {
     },
     skipEncoding: true
 };
-var restype = {
+const restype = {
     parameterPath: "restype",
     mapper: {
         defaultValue: "service",
@@ -72340,7 +71113,7 @@ var restype = {
         }
     }
 };
-var comp = {
+const comp = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "properties",
@@ -72351,7 +71124,7 @@ var comp = {
         }
     }
 };
-var timeoutInSeconds = {
+const timeoutInSeconds = {
     parameterPath: ["options", "timeoutInSeconds"],
     mapper: {
         constraints: {
@@ -72364,7 +71137,7 @@ var timeoutInSeconds = {
         }
     }
 };
-var version = {
+const version = {
     parameterPath: "version",
     mapper: {
         defaultValue: "2020-08-04",
@@ -72375,7 +71148,7 @@ var version = {
         }
     }
 };
-var requestId = {
+const requestId = {
     parameterPath: ["options", "requestId"],
     mapper: {
         serializedName: "x-ms-client-request-id",
@@ -72385,7 +71158,7 @@ var requestId = {
         }
     }
 };
-var accept1 = {
+const accept1 = {
     parameterPath: "accept",
     mapper: {
         defaultValue: "application/xml",
@@ -72396,7 +71169,7 @@ var accept1 = {
         }
     }
 };
-var comp1 = {
+const comp1 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "stats",
@@ -72407,7 +71180,7 @@ var comp1 = {
         }
     }
 };
-var comp2 = {
+const comp2 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "list",
@@ -72418,7 +71191,7 @@ var comp2 = {
         }
     }
 };
-var prefix = {
+const prefix = {
     parameterPath: ["options", "prefix"],
     mapper: {
         serializedName: "prefix",
@@ -72428,7 +71201,7 @@ var prefix = {
         }
     }
 };
-var marker = {
+const marker = {
     parameterPath: ["options", "marker"],
     mapper: {
         serializedName: "marker",
@@ -72438,7 +71211,7 @@ var marker = {
         }
     }
 };
-var maxPageSize = {
+const maxPageSize = {
     parameterPath: ["options", "maxPageSize"],
     mapper: {
         constraints: {
@@ -72451,7 +71224,7 @@ var maxPageSize = {
         }
     }
 };
-var include = {
+const include = {
     parameterPath: ["options", "include"],
     mapper: {
         serializedName: "include",
@@ -72469,11 +71242,11 @@ var include = {
     },
     collectionFormat: coreHttp.QueryCollectionFormat.Csv
 };
-var keyInfo = {
+const keyInfo = {
     parameterPath: "keyInfo",
     mapper: KeyInfo
 };
-var comp3 = {
+const comp3 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "userdelegationkey",
@@ -72484,7 +71257,7 @@ var comp3 = {
         }
     }
 };
-var restype1 = {
+const restype1 = {
     parameterPath: "restype",
     mapper: {
         defaultValue: "account",
@@ -72495,7 +71268,7 @@ var restype1 = {
         }
     }
 };
-var body = {
+const body = {
     parameterPath: "body",
     mapper: {
         serializedName: "body",
@@ -72506,7 +71279,7 @@ var body = {
         }
     }
 };
-var comp4 = {
+const comp4 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "batch",
@@ -72517,7 +71290,7 @@ var comp4 = {
         }
     }
 };
-var contentLength = {
+const contentLength = {
     parameterPath: "contentLength",
     mapper: {
         serializedName: "Content-Length",
@@ -72528,7 +71301,7 @@ var contentLength = {
         }
     }
 };
-var multipartContentType = {
+const multipartContentType = {
     parameterPath: "multipartContentType",
     mapper: {
         serializedName: "Content-Type",
@@ -72539,7 +71312,7 @@ var multipartContentType = {
         }
     }
 };
-var comp5 = {
+const comp5 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "blobs",
@@ -72550,7 +71323,7 @@ var comp5 = {
         }
     }
 };
-var where = {
+const where = {
     parameterPath: ["options", "where"],
     mapper: {
         serializedName: "where",
@@ -72560,7 +71333,7 @@ var where = {
         }
     }
 };
-var restype2 = {
+const restype2 = {
     parameterPath: "restype",
     mapper: {
         defaultValue: "container",
@@ -72571,7 +71344,7 @@ var restype2 = {
         }
     }
 };
-var metadata = {
+const metadata = {
     parameterPath: ["options", "metadata"],
     mapper: {
         serializedName: "x-ms-meta",
@@ -72583,7 +71356,7 @@ var metadata = {
         headerCollectionPrefix: "x-ms-meta-"
     }
 };
-var access = {
+const access = {
     parameterPath: ["options", "access"],
     mapper: {
         serializedName: "x-ms-blob-public-access",
@@ -72594,7 +71367,7 @@ var access = {
         }
     }
 };
-var defaultEncryptionScope = {
+const defaultEncryptionScope = {
     parameterPath: [
         "options",
         "containerEncryptionScope",
@@ -72608,7 +71381,7 @@ var defaultEncryptionScope = {
         }
     }
 };
-var preventEncryptionScopeOverride = {
+const preventEncryptionScopeOverride = {
     parameterPath: [
         "options",
         "containerEncryptionScope",
@@ -72622,7 +71395,7 @@ var preventEncryptionScopeOverride = {
         }
     }
 };
-var leaseId = {
+const leaseId = {
     parameterPath: ["options", "leaseAccessConditions", "leaseId"],
     mapper: {
         serializedName: "x-ms-lease-id",
@@ -72632,7 +71405,7 @@ var leaseId = {
         }
     }
 };
-var ifModifiedSince = {
+const ifModifiedSince = {
     parameterPath: ["options", "modifiedAccessConditions", "ifModifiedSince"],
     mapper: {
         serializedName: "If-Modified-Since",
@@ -72642,7 +71415,7 @@ var ifModifiedSince = {
         }
     }
 };
-var ifUnmodifiedSince = {
+const ifUnmodifiedSince = {
     parameterPath: ["options", "modifiedAccessConditions", "ifUnmodifiedSince"],
     mapper: {
         serializedName: "If-Unmodified-Since",
@@ -72652,7 +71425,7 @@ var ifUnmodifiedSince = {
         }
     }
 };
-var comp6 = {
+const comp6 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "metadata",
@@ -72663,7 +71436,7 @@ var comp6 = {
         }
     }
 };
-var comp7 = {
+const comp7 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "acl",
@@ -72674,7 +71447,7 @@ var comp7 = {
         }
     }
 };
-var containerAcl = {
+const containerAcl = {
     parameterPath: ["options", "containerAcl"],
     mapper: {
         serializedName: "containerAcl",
@@ -72692,7 +71465,7 @@ var containerAcl = {
         }
     }
 };
-var comp8 = {
+const comp8 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "undelete",
@@ -72703,7 +71476,7 @@ var comp8 = {
         }
     }
 };
-var deletedContainerName = {
+const deletedContainerName = {
     parameterPath: ["options", "deletedContainerName"],
     mapper: {
         serializedName: "x-ms-deleted-container-name",
@@ -72713,7 +71486,7 @@ var deletedContainerName = {
         }
     }
 };
-var deletedContainerVersion = {
+const deletedContainerVersion = {
     parameterPath: ["options", "deletedContainerVersion"],
     mapper: {
         serializedName: "x-ms-deleted-container-version",
@@ -72723,7 +71496,7 @@ var deletedContainerVersion = {
         }
     }
 };
-var comp9 = {
+const comp9 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "rename",
@@ -72734,7 +71507,7 @@ var comp9 = {
         }
     }
 };
-var sourceContainerName = {
+const sourceContainerName = {
     parameterPath: "sourceContainerName",
     mapper: {
         serializedName: "x-ms-source-container-name",
@@ -72745,7 +71518,7 @@ var sourceContainerName = {
         }
     }
 };
-var sourceLeaseId = {
+const sourceLeaseId = {
     parameterPath: ["options", "sourceLeaseId"],
     mapper: {
         serializedName: "x-ms-source-lease-id",
@@ -72755,7 +71528,7 @@ var sourceLeaseId = {
         }
     }
 };
-var comp10 = {
+const comp10 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "lease",
@@ -72766,7 +71539,7 @@ var comp10 = {
         }
     }
 };
-var action = {
+const action = {
     parameterPath: "action",
     mapper: {
         defaultValue: "acquire",
@@ -72777,7 +71550,7 @@ var action = {
         }
     }
 };
-var duration = {
+const duration = {
     parameterPath: ["options", "duration"],
     mapper: {
         serializedName: "x-ms-lease-duration",
@@ -72787,7 +71560,7 @@ var duration = {
         }
     }
 };
-var proposedLeaseId = {
+const proposedLeaseId = {
     parameterPath: ["options", "proposedLeaseId"],
     mapper: {
         serializedName: "x-ms-proposed-lease-id",
@@ -72797,7 +71570,7 @@ var proposedLeaseId = {
         }
     }
 };
-var action1 = {
+const action1 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "release",
@@ -72808,7 +71581,7 @@ var action1 = {
         }
     }
 };
-var leaseId1 = {
+const leaseId1 = {
     parameterPath: "leaseId",
     mapper: {
         serializedName: "x-ms-lease-id",
@@ -72819,7 +71592,7 @@ var leaseId1 = {
         }
     }
 };
-var action2 = {
+const action2 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "renew",
@@ -72830,7 +71603,7 @@ var action2 = {
         }
     }
 };
-var action3 = {
+const action3 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "break",
@@ -72841,7 +71614,7 @@ var action3 = {
         }
     }
 };
-var breakPeriod = {
+const breakPeriod = {
     parameterPath: ["options", "breakPeriod"],
     mapper: {
         serializedName: "x-ms-lease-break-period",
@@ -72851,7 +71624,7 @@ var breakPeriod = {
         }
     }
 };
-var action4 = {
+const action4 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "change",
@@ -72862,7 +71635,7 @@ var action4 = {
         }
     }
 };
-var proposedLeaseId1 = {
+const proposedLeaseId1 = {
     parameterPath: "proposedLeaseId",
     mapper: {
         serializedName: "x-ms-proposed-lease-id",
@@ -72873,7 +71646,7 @@ var proposedLeaseId1 = {
         }
     }
 };
-var include1 = {
+const include1 = {
     parameterPath: ["options", "include"],
     mapper: {
         serializedName: "include",
@@ -72899,7 +71672,7 @@ var include1 = {
     },
     collectionFormat: coreHttp.QueryCollectionFormat.Csv
 };
-var delimiter = {
+const delimiter = {
     parameterPath: "delimiter",
     mapper: {
         serializedName: "delimiter",
@@ -72910,7 +71683,7 @@ var delimiter = {
         }
     }
 };
-var directoryProperties = {
+const directoryProperties = {
     parameterPath: ["options", "directoryProperties"],
     mapper: {
         serializedName: "x-ms-properties",
@@ -72920,7 +71693,7 @@ var directoryProperties = {
         }
     }
 };
-var posixPermissions = {
+const posixPermissions = {
     parameterPath: ["options", "posixPermissions"],
     mapper: {
         serializedName: "x-ms-permissions",
@@ -72930,7 +71703,7 @@ var posixPermissions = {
         }
     }
 };
-var posixUmask = {
+const posixUmask = {
     parameterPath: ["options", "posixUmask"],
     mapper: {
         serializedName: "x-ms-umask",
@@ -72940,7 +71713,7 @@ var posixUmask = {
         }
     }
 };
-var cacheControl = {
+const cacheControl = {
     parameterPath: ["options", "directoryHttpHeaders", "cacheControl"],
     mapper: {
         serializedName: "x-ms-cache-control",
@@ -72950,7 +71723,7 @@ var cacheControl = {
         }
     }
 };
-var contentType1 = {
+const contentType1 = {
     parameterPath: ["options", "directoryHttpHeaders", "contentType"],
     mapper: {
         serializedName: "x-ms-content-type",
@@ -72960,7 +71733,7 @@ var contentType1 = {
         }
     }
 };
-var contentEncoding = {
+const contentEncoding = {
     parameterPath: ["options", "directoryHttpHeaders", "contentEncoding"],
     mapper: {
         serializedName: "x-ms-content-encoding",
@@ -72970,7 +71743,7 @@ var contentEncoding = {
         }
     }
 };
-var contentLanguage = {
+const contentLanguage = {
     parameterPath: ["options", "directoryHttpHeaders", "contentLanguage"],
     mapper: {
         serializedName: "x-ms-content-language",
@@ -72980,7 +71753,7 @@ var contentLanguage = {
         }
     }
 };
-var contentDisposition = {
+const contentDisposition = {
     parameterPath: ["options", "directoryHttpHeaders", "contentDisposition"],
     mapper: {
         serializedName: "x-ms-content-disposition",
@@ -72990,7 +71763,7 @@ var contentDisposition = {
         }
     }
 };
-var ifMatch = {
+const ifMatch = {
     parameterPath: ["options", "modifiedAccessConditions", "ifMatch"],
     mapper: {
         serializedName: "If-Match",
@@ -73000,7 +71773,7 @@ var ifMatch = {
         }
     }
 };
-var ifNoneMatch = {
+const ifNoneMatch = {
     parameterPath: ["options", "modifiedAccessConditions", "ifNoneMatch"],
     mapper: {
         serializedName: "If-None-Match",
@@ -73010,7 +71783,7 @@ var ifNoneMatch = {
         }
     }
 };
-var pathRenameMode = {
+const pathRenameMode = {
     parameterPath: ["options", "pathRenameMode"],
     mapper: {
         serializedName: "mode",
@@ -73021,7 +71794,7 @@ var pathRenameMode = {
         }
     }
 };
-var renameSource = {
+const renameSource = {
     parameterPath: "renameSource",
     mapper: {
         serializedName: "x-ms-rename-source",
@@ -73032,7 +71805,7 @@ var renameSource = {
         }
     }
 };
-var sourceIfModifiedSince = {
+const sourceIfModifiedSince = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -73046,7 +71819,7 @@ var sourceIfModifiedSince = {
         }
     }
 };
-var sourceIfUnmodifiedSince = {
+const sourceIfUnmodifiedSince = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -73060,7 +71833,7 @@ var sourceIfUnmodifiedSince = {
         }
     }
 };
-var sourceIfMatch = {
+const sourceIfMatch = {
     parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfMatch"],
     mapper: {
         serializedName: "x-ms-source-if-match",
@@ -73070,7 +71843,7 @@ var sourceIfMatch = {
         }
     }
 };
-var sourceIfNoneMatch = {
+const sourceIfNoneMatch = {
     parameterPath: [
         "options",
         "sourceModifiedAccessConditions",
@@ -73084,7 +71857,7 @@ var sourceIfNoneMatch = {
         }
     }
 };
-var action5 = {
+const action5 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "setAccessControl",
@@ -73095,7 +71868,7 @@ var action5 = {
         }
     }
 };
-var owner = {
+const owner = {
     parameterPath: ["options", "owner"],
     mapper: {
         serializedName: "x-ms-owner",
@@ -73105,7 +71878,7 @@ var owner = {
         }
     }
 };
-var group = {
+const group = {
     parameterPath: ["options", "group"],
     mapper: {
         serializedName: "x-ms-group",
@@ -73115,7 +71888,7 @@ var group = {
         }
     }
 };
-var posixAcl = {
+const posixAcl = {
     parameterPath: ["options", "posixAcl"],
     mapper: {
         serializedName: "x-ms-acl",
@@ -73125,7 +71898,7 @@ var posixAcl = {
         }
     }
 };
-var action6 = {
+const action6 = {
     parameterPath: "action",
     mapper: {
         defaultValue: "getAccessControl",
@@ -73136,7 +71909,7 @@ var action6 = {
         }
     }
 };
-var upn = {
+const upn = {
     parameterPath: ["options", "upn"],
     mapper: {
         serializedName: "upn",
@@ -73146,7 +71919,7 @@ var upn = {
         }
     }
 };
-var snapshot = {
+const snapshot = {
     parameterPath: ["options", "snapshot"],
     mapper: {
         serializedName: "snapshot",
@@ -73156,7 +71929,7 @@ var snapshot = {
         }
     }
 };
-var versionId = {
+const versionId = {
     parameterPath: ["options", "versionId"],
     mapper: {
         serializedName: "versionid",
@@ -73166,7 +71939,7 @@ var versionId = {
         }
     }
 };
-var range = {
+const range = {
     parameterPath: ["options", "range"],
     mapper: {
         serializedName: "x-ms-range",
@@ -73176,7 +71949,7 @@ var range = {
         }
     }
 };
-var rangeGetContentMD5 = {
+const rangeGetContentMD5 = {
     parameterPath: ["options", "rangeGetContentMD5"],
     mapper: {
         serializedName: "x-ms-range-get-content-md5",
@@ -73186,7 +71959,7 @@ var rangeGetContentMD5 = {
         }
     }
 };
-var rangeGetContentCRC64 = {
+const rangeGetContentCRC64 = {
     parameterPath: ["options", "rangeGetContentCRC64"],
     mapper: {
         serializedName: "x-ms-range-get-content-crc64",
@@ -73196,7 +71969,7 @@ var rangeGetContentCRC64 = {
         }
     }
 };
-var encryptionKey = {
+const encryptionKey = {
     parameterPath: ["options", "cpkInfo", "encryptionKey"],
     mapper: {
         serializedName: "x-ms-encryption-key",
@@ -73206,7 +71979,7 @@ var encryptionKey = {
         }
     }
 };
-var encryptionKeySha256 = {
+const encryptionKeySha256 = {
     parameterPath: ["options", "cpkInfo", "encryptionKeySha256"],
     mapper: {
         serializedName: "x-ms-encryption-key-sha256",
@@ -73216,7 +71989,7 @@ var encryptionKeySha256 = {
         }
     }
 };
-var encryptionAlgorithm = {
+const encryptionAlgorithm = {
     parameterPath: ["options", "encryptionAlgorithm"],
     mapper: {
         defaultValue: "AES256",
@@ -73227,7 +72000,7 @@ var encryptionAlgorithm = {
         }
     }
 };
-var ifTags = {
+const ifTags = {
     parameterPath: ["options", "modifiedAccessConditions", "ifTags"],
     mapper: {
         serializedName: "x-ms-if-tags",
@@ -73237,7 +72010,7 @@ var ifTags = {
         }
     }
 };
-var deleteSnapshots = {
+const deleteSnapshots = {
     parameterPath: ["options", "deleteSnapshots"],
     mapper: {
         serializedName: "x-ms-delete-snapshots",
@@ -73248,7 +72021,7 @@ var deleteSnapshots = {
         }
     }
 };
-var blobDeleteType = {
+const blobDeleteType = {
     parameterPath: ["options", "blobDeleteType"],
     mapper: {
         serializedName: "deletetype",
@@ -73258,7 +72031,7 @@ var blobDeleteType = {
         }
     }
 };
-var comp11 = {
+const comp11 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "expiry",
@@ -73269,7 +72042,7 @@ var comp11 = {
         }
     }
 };
-var expiryOptions = {
+const expiryOptions = {
     parameterPath: "expiryOptions",
     mapper: {
         serializedName: "x-ms-expiry-option",
@@ -73280,7 +72053,7 @@ var expiryOptions = {
         }
     }
 };
-var expiresOn = {
+const expiresOn = {
     parameterPath: ["options", "expiresOn"],
     mapper: {
         serializedName: "x-ms-expiry-time",
@@ -73290,7 +72063,7 @@ var expiresOn = {
         }
     }
 };
-var blobCacheControl = {
+const blobCacheControl = {
     parameterPath: ["options", "blobHttpHeaders", "blobCacheControl"],
     mapper: {
         serializedName: "x-ms-blob-cache-control",
@@ -73300,7 +72073,7 @@ var blobCacheControl = {
         }
     }
 };
-var blobContentType = {
+const blobContentType = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentType"],
     mapper: {
         serializedName: "x-ms-blob-content-type",
@@ -73310,7 +72083,7 @@ var blobContentType = {
         }
     }
 };
-var blobContentMD5 = {
+const blobContentMD5 = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentMD5"],
     mapper: {
         serializedName: "x-ms-blob-content-md5",
@@ -73320,7 +72093,7 @@ var blobContentMD5 = {
         }
     }
 };
-var blobContentEncoding = {
+const blobContentEncoding = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentEncoding"],
     mapper: {
         serializedName: "x-ms-blob-content-encoding",
@@ -73330,7 +72103,7 @@ var blobContentEncoding = {
         }
     }
 };
-var blobContentLanguage = {
+const blobContentLanguage = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentLanguage"],
     mapper: {
         serializedName: "x-ms-blob-content-language",
@@ -73340,7 +72113,7 @@ var blobContentLanguage = {
         }
     }
 };
-var blobContentDisposition = {
+const blobContentDisposition = {
     parameterPath: ["options", "blobHttpHeaders", "blobContentDisposition"],
     mapper: {
         serializedName: "x-ms-blob-content-disposition",
@@ -73350,7 +72123,7 @@ var blobContentDisposition = {
         }
     }
 };
-var encryptionScope = {
+const encryptionScope = {
     parameterPath: ["options", "encryptionScope"],
     mapper: {
         serializedName: "x-ms-encryption-scope",
@@ -73360,7 +72133,7 @@ var encryptionScope = {
         }
     }
 };
-var comp12 = {
+const comp12 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "snapshot",
@@ -73371,7 +72144,7 @@ var comp12 = {
         }
     }
 };
-var tier = {
+const tier = {
     parameterPath: ["options", "tier"],
     mapper: {
         serializedName: "x-ms-access-tier",
@@ -73397,7 +72170,7 @@ var tier = {
         }
     }
 };
-var rehydratePriority = {
+const rehydratePriority = {
     parameterPath: ["options", "rehydratePriority"],
     mapper: {
         serializedName: "x-ms-rehydrate-priority",
@@ -73408,7 +72181,7 @@ var rehydratePriority = {
         }
     }
 };
-var sourceIfTags = {
+const sourceIfTags = {
     parameterPath: ["options", "sourceModifiedAccessConditions", "sourceIfTags"],
     mapper: {
         serializedName: "x-ms-source-if-tags",
@@ -73418,7 +72191,7 @@ var sourceIfTags = {
         }
     }
 };
-var copySource = {
+const copySource = {
     parameterPath: "copySource",
     mapper: {
         serializedName: "x-ms-copy-source",
@@ -73429,7 +72202,7 @@ var copySource = {
         }
     }
 };
-var blobTagsString = {
+const blobTagsString = {
     parameterPath: ["options", "blobTagsString"],
     mapper: {
         serializedName: "x-ms-tags",
@@ -73439,7 +72212,7 @@ var blobTagsString = {
         }
     }
 };
-var sealBlob = {
+const sealBlob = {
     parameterPath: ["options", "sealBlob"],
     mapper: {
         serializedName: "x-ms-seal-blob",
@@ -73449,7 +72222,7 @@ var sealBlob = {
         }
     }
 };
-var xMsRequiresSync = {
+const xMsRequiresSync = {
     parameterPath: "xMsRequiresSync",
     mapper: {
         defaultValue: "true",
@@ -73460,7 +72233,7 @@ var xMsRequiresSync = {
         }
     }
 };
-var sourceContentMD5 = {
+const sourceContentMD5 = {
     parameterPath: ["options", "sourceContentMD5"],
     mapper: {
         serializedName: "x-ms-source-content-md5",
@@ -73470,7 +72243,7 @@ var sourceContentMD5 = {
         }
     }
 };
-var comp13 = {
+const comp13 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "copy",
@@ -73481,7 +72254,7 @@ var comp13 = {
         }
     }
 };
-var copyActionAbortConstant = {
+const copyActionAbortConstant = {
     parameterPath: "copyActionAbortConstant",
     mapper: {
         defaultValue: "abort",
@@ -73492,7 +72265,7 @@ var copyActionAbortConstant = {
         }
     }
 };
-var copyId = {
+const copyId = {
     parameterPath: "copyId",
     mapper: {
         serializedName: "copyid",
@@ -73503,7 +72276,7 @@ var copyId = {
         }
     }
 };
-var comp14 = {
+const comp14 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "tier",
@@ -73514,7 +72287,7 @@ var comp14 = {
         }
     }
 };
-var tier1 = {
+const tier1 = {
     parameterPath: "tier",
     mapper: {
         serializedName: "x-ms-access-tier",
@@ -73541,11 +72314,11 @@ var tier1 = {
         }
     }
 };
-var queryRequest = {
+const queryRequest = {
     parameterPath: ["options", "queryRequest"],
     mapper: QueryRequest
 };
-var comp15 = {
+const comp15 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "query",
@@ -73556,7 +72329,7 @@ var comp15 = {
         }
     }
 };
-var comp16 = {
+const comp16 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "tags",
@@ -73567,11 +72340,11 @@ var comp16 = {
         }
     }
 };
-var tags = {
+const tags = {
     parameterPath: ["options", "tags"],
     mapper: BlobTags
 };
-var transactionalContentMD5 = {
+const transactionalContentMD5 = {
     parameterPath: ["options", "transactionalContentMD5"],
     mapper: {
         serializedName: "Content-MD5",
@@ -73581,7 +72354,7 @@ var transactionalContentMD5 = {
         }
     }
 };
-var transactionalContentCrc64 = {
+const transactionalContentCrc64 = {
     parameterPath: ["options", "transactionalContentCrc64"],
     mapper: {
         serializedName: "x-ms-content-crc64",
@@ -73591,7 +72364,7 @@ var transactionalContentCrc64 = {
         }
     }
 };
-var blobType = {
+const blobType = {
     parameterPath: "blobType",
     mapper: {
         defaultValue: "PageBlob",
@@ -73602,7 +72375,7 @@ var blobType = {
         }
     }
 };
-var blobContentLength = {
+const blobContentLength = {
     parameterPath: "blobContentLength",
     mapper: {
         serializedName: "x-ms-blob-content-length",
@@ -73613,7 +72386,7 @@ var blobContentLength = {
         }
     }
 };
-var blobSequenceNumber = {
+const blobSequenceNumber = {
     parameterPath: ["options", "blobSequenceNumber"],
     mapper: {
         serializedName: "x-ms-blob-sequence-number",
@@ -73623,7 +72396,7 @@ var blobSequenceNumber = {
         }
     }
 };
-var contentType2 = {
+const contentType2 = {
     parameterPath: ["options", "contentType"],
     mapper: {
         defaultValue: "application/octet-stream",
@@ -73634,7 +72407,7 @@ var contentType2 = {
         }
     }
 };
-var body1 = {
+const body1 = {
     parameterPath: "body",
     mapper: {
         serializedName: "body",
@@ -73645,7 +72418,7 @@ var body1 = {
         }
     }
 };
-var accept2 = {
+const accept2 = {
     parameterPath: "accept",
     mapper: {
         defaultValue: "application/xml",
@@ -73656,7 +72429,7 @@ var accept2 = {
         }
     }
 };
-var comp17 = {
+const comp17 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "page",
@@ -73667,7 +72440,7 @@ var comp17 = {
         }
     }
 };
-var pageWrite = {
+const pageWrite = {
     parameterPath: "pageWrite",
     mapper: {
         defaultValue: "update",
@@ -73678,7 +72451,7 @@ var pageWrite = {
         }
     }
 };
-var ifSequenceNumberLessThanOrEqualTo = {
+const ifSequenceNumberLessThanOrEqualTo = {
     parameterPath: [
         "options",
         "sequenceNumberAccessConditions",
@@ -73692,7 +72465,7 @@ var ifSequenceNumberLessThanOrEqualTo = {
         }
     }
 };
-var ifSequenceNumberLessThan = {
+const ifSequenceNumberLessThan = {
     parameterPath: [
         "options",
         "sequenceNumberAccessConditions",
@@ -73706,7 +72479,7 @@ var ifSequenceNumberLessThan = {
         }
     }
 };
-var ifSequenceNumberEqualTo = {
+const ifSequenceNumberEqualTo = {
     parameterPath: [
         "options",
         "sequenceNumberAccessConditions",
@@ -73720,7 +72493,7 @@ var ifSequenceNumberEqualTo = {
         }
     }
 };
-var pageWrite1 = {
+const pageWrite1 = {
     parameterPath: "pageWrite",
     mapper: {
         defaultValue: "clear",
@@ -73731,7 +72504,7 @@ var pageWrite1 = {
         }
     }
 };
-var sourceUrl = {
+const sourceUrl = {
     parameterPath: "sourceUrl",
     mapper: {
         serializedName: "x-ms-copy-source",
@@ -73742,7 +72515,7 @@ var sourceUrl = {
         }
     }
 };
-var sourceRange = {
+const sourceRange = {
     parameterPath: "sourceRange",
     mapper: {
         serializedName: "x-ms-source-range",
@@ -73753,7 +72526,7 @@ var sourceRange = {
         }
     }
 };
-var sourceContentCrc64 = {
+const sourceContentCrc64 = {
     parameterPath: ["options", "sourceContentCrc64"],
     mapper: {
         serializedName: "x-ms-source-content-crc64",
@@ -73763,7 +72536,7 @@ var sourceContentCrc64 = {
         }
     }
 };
-var range1 = {
+const range1 = {
     parameterPath: "range",
     mapper: {
         serializedName: "x-ms-range",
@@ -73774,7 +72547,7 @@ var range1 = {
         }
     }
 };
-var comp18 = {
+const comp18 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "pagelist",
@@ -73785,7 +72558,7 @@ var comp18 = {
         }
     }
 };
-var prevsnapshot = {
+const prevsnapshot = {
     parameterPath: ["options", "prevsnapshot"],
     mapper: {
         serializedName: "prevsnapshot",
@@ -73795,7 +72568,7 @@ var prevsnapshot = {
         }
     }
 };
-var prevSnapshotUrl = {
+const prevSnapshotUrl = {
     parameterPath: ["options", "prevSnapshotUrl"],
     mapper: {
         serializedName: "x-ms-previous-snapshot-url",
@@ -73805,7 +72578,7 @@ var prevSnapshotUrl = {
         }
     }
 };
-var sequenceNumberAction = {
+const sequenceNumberAction = {
     parameterPath: "sequenceNumberAction",
     mapper: {
         serializedName: "x-ms-sequence-number-action",
@@ -73817,7 +72590,7 @@ var sequenceNumberAction = {
         }
     }
 };
-var comp19 = {
+const comp19 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "incrementalcopy",
@@ -73828,7 +72601,7 @@ var comp19 = {
         }
     }
 };
-var blobType1 = {
+const blobType1 = {
     parameterPath: "blobType",
     mapper: {
         defaultValue: "AppendBlob",
@@ -73839,7 +72612,7 @@ var blobType1 = {
         }
     }
 };
-var comp20 = {
+const comp20 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "appendblock",
@@ -73850,7 +72623,7 @@ var comp20 = {
         }
     }
 };
-var maxSize = {
+const maxSize = {
     parameterPath: ["options", "appendPositionAccessConditions", "maxSize"],
     mapper: {
         serializedName: "x-ms-blob-condition-maxsize",
@@ -73860,7 +72633,7 @@ var maxSize = {
         }
     }
 };
-var appendPosition = {
+const appendPosition = {
     parameterPath: [
         "options",
         "appendPositionAccessConditions",
@@ -73874,7 +72647,7 @@ var appendPosition = {
         }
     }
 };
-var sourceRange1 = {
+const sourceRange1 = {
     parameterPath: ["options", "sourceRange"],
     mapper: {
         serializedName: "x-ms-source-range",
@@ -73884,7 +72657,7 @@ var sourceRange1 = {
         }
     }
 };
-var comp21 = {
+const comp21 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "seal",
@@ -73895,7 +72668,7 @@ var comp21 = {
         }
     }
 };
-var blobType2 = {
+const blobType2 = {
     parameterPath: "blobType",
     mapper: {
         defaultValue: "BlockBlob",
@@ -73906,7 +72679,7 @@ var blobType2 = {
         }
     }
 };
-var copySourceBlobProperties = {
+const copySourceBlobProperties = {
     parameterPath: ["options", "copySourceBlobProperties"],
     mapper: {
         serializedName: "x-ms-copy-source-blob-properties",
@@ -73916,7 +72689,7 @@ var copySourceBlobProperties = {
         }
     }
 };
-var comp22 = {
+const comp22 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "block",
@@ -73927,7 +72700,7 @@ var comp22 = {
         }
     }
 };
-var blockId = {
+const blockId = {
     parameterPath: "blockId",
     mapper: {
         serializedName: "blockid",
@@ -73938,11 +72711,11 @@ var blockId = {
         }
     }
 };
-var blocks = {
+const blocks = {
     parameterPath: "blocks",
     mapper: BlockLookupList
 };
-var comp23 = {
+const comp23 = {
     parameterPath: "comp",
     mapper: {
         defaultValue: "blocklist",
@@ -73953,7 +72726,7 @@ var comp23 = {
         }
     }
 };
-var listType = {
+const listType = {
     parameterPath: "listType",
     mapper: {
         defaultValue: "committed",
@@ -73975,12 +72748,12 @@ var listType = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a Service. */
-var Service = /** @class */ (function () {
+class Service {
     /**
      * Initialize a new instance of the class Service class.
      * @param client Reference to the service client
      */
-    function Service(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -73989,69 +72762,69 @@ var Service = /** @class */ (function () {
      * @param blobServiceProperties The StorageService properties.
      * @param options The options parameters.
      */
-    Service.prototype.setProperties = function (blobServiceProperties, options) {
-        var operationArguments = {
-            blobServiceProperties: blobServiceProperties,
+    setProperties(blobServiceProperties, options) {
+        const operationArguments = {
+            blobServiceProperties,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setPropertiesOperationSpec);
-    };
+    }
     /**
      * gets the properties of a storage account's Blob service, including properties for Storage Analytics
      * and CORS (Cross-Origin Resource Sharing) rules.
      * @param options The options parameters.
      */
-    Service.prototype.getProperties = function (options) {
-        var operationArguments = {
+    getProperties(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec);
-    };
+    }
     /**
      * Retrieves statistics related to replication for the Blob service. It is only available on the
      * secondary location endpoint when read-access geo-redundant replication is enabled for the storage
      * account.
      * @param options The options parameters.
      */
-    Service.prototype.getStatistics = function (options) {
-        var operationArguments = {
+    getStatistics(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getStatisticsOperationSpec);
-    };
+    }
     /**
      * The List Containers Segment operation returns a list of the containers under the specified account
      * @param options The options parameters.
      */
-    Service.prototype.listContainersSegment = function (options) {
-        var operationArguments = {
+    listContainersSegment(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, listContainersSegmentOperationSpec);
-    };
+    }
     /**
      * Retrieves a user delegation key for the Blob service. This is only a valid operation when using
      * bearer token authentication.
      * @param keyInfo Key information
      * @param options The options parameters.
      */
-    Service.prototype.getUserDelegationKey = function (keyInfo, options) {
-        var operationArguments = {
-            keyInfo: keyInfo,
+    getUserDelegationKey(keyInfo, options) {
+        const operationArguments = {
+            keyInfo,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getUserDelegationKeyOperationSpec);
-    };
+    }
     /**
      * Returns the sku name and account kind
      * @param options The options parameters.
      */
-    Service.prototype.getAccountInfo = function (options) {
-        var operationArguments = {
+    getAccountInfo(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec);
-    };
+    }
     /**
      * The Batch operation allows multiple API calls to be embedded into a single HTTP request.
      * @param contentLength The length of the request.
@@ -74060,32 +72833,31 @@ var Service = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    Service.prototype.submitBatch = function (contentLength, multipartContentType, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            multipartContentType: multipartContentType,
-            body: body,
+    submitBatch(contentLength, multipartContentType, body, options) {
+        const operationArguments = {
+            contentLength,
+            multipartContentType,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec);
-    };
+    }
     /**
      * The Filter Blobs operation enables callers to list blobs across all containers whose tags match a
      * given search expression.  Filter blobs searches across all containers within a storage account but
      * can be scoped within the expression to a single container.
      * @param options The options parameters.
      */
-    Service.prototype.filterBlobs = function (options) {
-        var operationArguments = {
+    filterBlobs(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, filterBlobsOperationSpec);
-    };
-    return Service;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var setPropertiesOperationSpec = {
+const xmlSerializer = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const setPropertiesOperationSpec = {
     path: "/",
     httpMethod: "PUT",
     responses: {
@@ -74115,7 +72887,7 @@ var setPropertiesOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer
 };
-var getPropertiesOperationSpec = {
+const getPropertiesOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -74142,7 +72914,7 @@ var getPropertiesOperationSpec = {
     isXML: true,
     serializer: xmlSerializer
 };
-var getStatisticsOperationSpec = {
+const getStatisticsOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -74169,7 +72941,7 @@ var getStatisticsOperationSpec = {
     isXML: true,
     serializer: xmlSerializer
 };
-var listContainersSegmentOperationSpec = {
+const listContainersSegmentOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -74199,7 +72971,7 @@ var listContainersSegmentOperationSpec = {
     isXML: true,
     serializer: xmlSerializer
 };
-var getUserDelegationKeyOperationSpec = {
+const getUserDelegationKeyOperationSpec = {
     path: "/",
     httpMethod: "POST",
     responses: {
@@ -74230,7 +73002,7 @@ var getUserDelegationKeyOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer
 };
-var getAccountInfoOperationSpec = {
+const getAccountInfoOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -74248,7 +73020,7 @@ var getAccountInfoOperationSpec = {
     isXML: true,
     serializer: xmlSerializer
 };
-var submitBatchOperationSpec = {
+const submitBatchOperationSpec = {
     path: "/",
     httpMethod: "POST",
     responses: {
@@ -74280,7 +73052,7 @@ var submitBatchOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer
 };
-var filterBlobsOperationSpec = {
+const filterBlobsOperationSpec = {
     path: "/",
     httpMethod: "GET",
     responses: {
@@ -74318,12 +73090,12 @@ var filterBlobsOperationSpec = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a Container. */
-var Container = /** @class */ (function () {
+class Container {
     /**
      * Initialize a new instance of the class Container class.
      * @param client Reference to the service client
      */
-    function Container(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -74331,88 +73103,88 @@ var Container = /** @class */ (function () {
      * exists, the operation fails
      * @param options The options parameters.
      */
-    Container.prototype.create = function (options) {
-        var operationArguments = {
+    create(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, createOperationSpec);
-    };
+    }
     /**
      * returns all user-defined metadata and system properties for the specified container. The data
      * returned does not include the container's list of blobs
      * @param options The options parameters.
      */
-    Container.prototype.getProperties = function (options) {
-        var operationArguments = {
+    getProperties(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$1);
-    };
+    }
     /**
      * operation marks the specified container for deletion. The container and any blobs contained within
      * it are later deleted during garbage collection
      * @param options The options parameters.
      */
-    Container.prototype.delete = function (options) {
-        var operationArguments = {
+    delete(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, deleteOperationSpec);
-    };
+    }
     /**
      * operation sets one or more user-defined name-value pairs for the specified container.
      * @param options The options parameters.
      */
-    Container.prototype.setMetadata = function (options) {
-        var operationArguments = {
+    setMetadata(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec);
-    };
+    }
     /**
      * gets the permissions for the specified container. The permissions indicate whether container data
      * may be accessed publicly.
      * @param options The options parameters.
      */
-    Container.prototype.getAccessPolicy = function (options) {
-        var operationArguments = {
+    getAccessPolicy(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccessPolicyOperationSpec);
-    };
+    }
     /**
      * sets the permissions for the specified container. The permissions indicate whether blobs in a
      * container may be accessed publicly.
      * @param options The options parameters.
      */
-    Container.prototype.setAccessPolicy = function (options) {
-        var operationArguments = {
+    setAccessPolicy(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setAccessPolicyOperationSpec);
-    };
+    }
     /**
      * Restores a previously-deleted container.
      * @param options The options parameters.
      */
-    Container.prototype.restore = function (options) {
-        var operationArguments = {
+    restore(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, restoreOperationSpec);
-    };
+    }
     /**
      * Renames an existing container.
      * @param sourceContainerName Required.  Specifies the name of the container to rename.
      * @param options The options parameters.
      */
-    Container.prototype.rename = function (sourceContainerName, options) {
-        var operationArguments = {
-            sourceContainerName: sourceContainerName,
+    rename(sourceContainerName, options) {
+        const operationArguments = {
+            sourceContainerName,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, renameOperationSpec);
-    };
+    }
     /**
      * The Batch operation allows multiple API calls to be embedded into a single HTTP request.
      * @param contentLength The length of the request.
@@ -74421,63 +73193,63 @@ var Container = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    Container.prototype.submitBatch = function (contentLength, multipartContentType, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            multipartContentType: multipartContentType,
-            body: body,
+    submitBatch(contentLength, multipartContentType, body, options) {
+        const operationArguments = {
+            contentLength,
+            multipartContentType,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, submitBatchOperationSpec$1);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
      * @param options The options parameters.
      */
-    Container.prototype.acquireLease = function (options) {
-        var operationArguments = {
+    acquireLease(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
      * @param leaseId Specifies the current lease ID on the resource.
      * @param options The options parameters.
      */
-    Container.prototype.releaseLease = function (leaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
+    releaseLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
      * @param leaseId Specifies the current lease ID on the resource.
      * @param options The options parameters.
      */
-    Container.prototype.renewLease = function (leaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
+    renewLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
      * @param options The options parameters.
      */
-    Container.prototype.breakLease = function (options) {
-        var operationArguments = {
+    breakLease(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] establishes and manages a lock on a container for delete operations. The lock duration can
      * be 15 to 60 seconds, or can be infinite
@@ -74487,24 +73259,24 @@ var Container = /** @class */ (function () {
      *                        (String) for a list of valid GUID string formats.
      * @param options The options parameters.
      */
-    Container.prototype.changeLease = function (leaseId, proposedLeaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
-            proposedLeaseId: proposedLeaseId,
+    changeLease(leaseId, proposedLeaseId, options) {
+        const operationArguments = {
+            leaseId,
+            proposedLeaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec);
-    };
+    }
     /**
      * [Update] The List Blobs operation returns a list of the blobs under the specified container
      * @param options The options parameters.
      */
-    Container.prototype.listBlobFlatSegment = function (options) {
-        var operationArguments = {
+    listBlobFlatSegment(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, listBlobFlatSegmentOperationSpec);
-    };
+    }
     /**
      * [Update] The List Blobs operation returns a list of the blobs under the specified container
      * @param delimiter When the request includes this parameter, the operation returns a BlobPrefix
@@ -74513,28 +73285,27 @@ var Container = /** @class */ (function () {
      *                  character or a string.
      * @param options The options parameters.
      */
-    Container.prototype.listBlobHierarchySegment = function (delimiter, options) {
-        var operationArguments = {
-            delimiter: delimiter,
+    listBlobHierarchySegment(delimiter, options) {
+        const operationArguments = {
+            delimiter,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, listBlobHierarchySegmentOperationSpec);
-    };
+    }
     /**
      * Returns the sku name and account kind
      * @param options The options parameters.
      */
-    Container.prototype.getAccountInfo = function (options) {
-        var operationArguments = {
+    getAccountInfo(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$1);
-    };
-    return Container;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var createOperationSpec = {
+const xmlSerializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const createOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74560,7 +73331,7 @@ var createOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var getPropertiesOperationSpec$1 = {
+const getPropertiesOperationSpec$1 = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -74583,7 +73354,7 @@ var getPropertiesOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var deleteOperationSpec = {
+const deleteOperationSpec = {
     path: "/{containerName}",
     httpMethod: "DELETE",
     responses: {
@@ -74608,7 +73379,7 @@ var deleteOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var setMetadataOperationSpec = {
+const setMetadataOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74637,7 +73408,7 @@ var setMetadataOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var getAccessPolicyOperationSpec = {
+const getAccessPolicyOperationSpec = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -74676,7 +73447,7 @@ var getAccessPolicyOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var setAccessPolicyOperationSpec = {
+const setAccessPolicyOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74710,7 +73481,7 @@ var setAccessPolicyOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer$1
 };
-var restoreOperationSpec = {
+const restoreOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74738,7 +73509,7 @@ var restoreOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var renameOperationSpec = {
+const renameOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74766,7 +73537,7 @@ var renameOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var submitBatchOperationSpec$1 = {
+const submitBatchOperationSpec$1 = {
     path: "/{containerName}",
     httpMethod: "POST",
     responses: {
@@ -74802,7 +73573,7 @@ var submitBatchOperationSpec$1 = {
     mediaType: "xml",
     serializer: xmlSerializer$1
 };
-var acquireLeaseOperationSpec = {
+const acquireLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74833,7 +73604,7 @@ var acquireLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var releaseLeaseOperationSpec = {
+const releaseLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74863,7 +73634,7 @@ var releaseLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var renewLeaseOperationSpec = {
+const renewLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74893,7 +73664,7 @@ var renewLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var breakLeaseOperationSpec = {
+const breakLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74923,7 +73694,7 @@ var breakLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var changeLeaseOperationSpec = {
+const changeLeaseOperationSpec = {
     path: "/{containerName}",
     httpMethod: "PUT",
     responses: {
@@ -74954,7 +73725,7 @@ var changeLeaseOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var listBlobFlatSegmentOperationSpec = {
+const listBlobFlatSegmentOperationSpec = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -74985,7 +73756,7 @@ var listBlobFlatSegmentOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var listBlobHierarchySegmentOperationSpec = {
+const listBlobHierarchySegmentOperationSpec = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -75017,7 +73788,7 @@ var listBlobHierarchySegmentOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$1
 };
-var getAccountInfoOperationSpec$1 = {
+const getAccountInfoOperationSpec$1 = {
     path: "/{containerName}",
     httpMethod: "GET",
     responses: {
@@ -75044,12 +73815,12 @@ var getAccountInfoOperationSpec$1 = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a Blob. */
-var Blob$1 = /** @class */ (function () {
+class Blob$1 {
     /**
      * Initialize a new instance of the class Blob class.
      * @param client Reference to the service client
      */
-    function Blob(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -75057,23 +73828,23 @@ var Blob$1 = /** @class */ (function () {
      * properties. You can also call Download to read a snapshot.
      * @param options The options parameters.
      */
-    Blob.prototype.download = function (options) {
-        var operationArguments = {
+    download(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, downloadOperationSpec);
-    };
+    }
     /**
      * The Get Properties operation returns all user-defined metadata, standard HTTP properties, and system
      * properties for the blob. It does not return the content of the blob.
      * @param options The options parameters.
      */
-    Blob.prototype.getProperties = function (options) {
-        var operationArguments = {
+    getProperties(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPropertiesOperationSpec$2);
-    };
+    }
     /**
      * If the storage account's soft delete feature is disabled then, when a blob is deleted, it is
      * permanently removed from the storage account. If the storage account's soft delete feature is
@@ -75089,32 +73860,32 @@ var Blob$1 = /** @class */ (function () {
      * (ResourceNotFound).
      * @param options The options parameters.
      */
-    Blob.prototype.delete = function (options) {
-        var operationArguments = {
+    delete(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, deleteOperationSpec$1);
-    };
+    }
     /**
      * Set the owner, group, permissions, or access control list for a blob.
      * @param options The options parameters.
      */
-    Blob.prototype.setAccessControl = function (options) {
-        var operationArguments = {
+    setAccessControl(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setAccessControlOperationSpec);
-    };
+    }
     /**
      * Get the owner, group, permissions, or access control list for a blob.
      * @param options The options parameters.
      */
-    Blob.prototype.getAccessControl = function (options) {
-        var operationArguments = {
+    getAccessControl(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccessControlOperationSpec);
-    };
+    }
     /**
      * Rename a blob/file.  By default, the destination is overwritten and if the destination already
      * exists and has a lease the lease is broken.  This operation supports conditional HTTP requests.  For
@@ -75126,93 +73897,93 @@ var Blob$1 = /** @class */ (function () {
      *                     existing properties; otherwise, the existing properties will be preserved.
      * @param options The options parameters.
      */
-    Blob.prototype.rename = function (renameSource, options) {
-        var operationArguments = {
-            renameSource: renameSource,
+    rename(renameSource, options) {
+        const operationArguments = {
+            renameSource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, renameOperationSpec$1);
-    };
+    }
     /**
      * Undelete a blob that was previously soft deleted
      * @param options The options parameters.
      */
-    Blob.prototype.undelete = function (options) {
-        var operationArguments = {
+    undelete(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, undeleteOperationSpec);
-    };
+    }
     /**
      * Sets the time a blob will expire and be deleted.
      * @param expiryOptions Required. Indicates mode of the expiry time
      * @param options The options parameters.
      */
-    Blob.prototype.setExpiry = function (expiryOptions, options) {
-        var operationArguments = {
-            expiryOptions: expiryOptions,
+    setExpiry(expiryOptions, options) {
+        const operationArguments = {
+            expiryOptions,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setExpiryOperationSpec);
-    };
+    }
     /**
      * The Set HTTP Headers operation sets system properties on the blob
      * @param options The options parameters.
      */
-    Blob.prototype.setHttpHeaders = function (options) {
-        var operationArguments = {
+    setHttpHeaders(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setHttpHeadersOperationSpec);
-    };
+    }
     /**
      * The Set Blob Metadata operation sets user-defined metadata for the specified blob as one or more
      * name-value pairs
      * @param options The options parameters.
      */
-    Blob.prototype.setMetadata = function (options) {
-        var operationArguments = {
+    setMetadata(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setMetadataOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
      * @param options The options parameters.
      */
-    Blob.prototype.acquireLease = function (options) {
-        var operationArguments = {
+    acquireLease(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, acquireLeaseOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
      * @param leaseId Specifies the current lease ID on the resource.
      * @param options The options parameters.
      */
-    Blob.prototype.releaseLease = function (leaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
+    releaseLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, releaseLeaseOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
      * @param leaseId Specifies the current lease ID on the resource.
      * @param options The options parameters.
      */
-    Blob.prototype.renewLease = function (leaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
+    renewLease(leaseId, options) {
+        const operationArguments = {
+            leaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, renewLeaseOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
@@ -75222,35 +73993,35 @@ var Blob$1 = /** @class */ (function () {
      *                        (String) for a list of valid GUID string formats.
      * @param options The options parameters.
      */
-    Blob.prototype.changeLease = function (leaseId, proposedLeaseId, options) {
-        var operationArguments = {
-            leaseId: leaseId,
-            proposedLeaseId: proposedLeaseId,
+    changeLease(leaseId, proposedLeaseId, options) {
+        const operationArguments = {
+            leaseId,
+            proposedLeaseId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, changeLeaseOperationSpec$1);
-    };
+    }
     /**
      * [Update] The Lease Blob operation establishes and manages a lock on a blob for write and delete
      * operations
      * @param options The options parameters.
      */
-    Blob.prototype.breakLease = function (options) {
-        var operationArguments = {
+    breakLease(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, breakLeaseOperationSpec$1);
-    };
+    }
     /**
      * The Create Snapshot operation creates a read-only snapshot of a blob
      * @param options The options parameters.
      */
-    Blob.prototype.createSnapshot = function (options) {
-        var operationArguments = {
+    createSnapshot(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, createSnapshotOperationSpec);
-    };
+    }
     /**
      * The Start Copy From URL operation copies a blob or an internet resource to a new blob.
      * @param copySource Specifies the name of the source page blob snapshot. This value is a URL of up to
@@ -75259,13 +74030,13 @@ var Blob$1 = /** @class */ (function () {
      *                   access signature.
      * @param options The options parameters.
      */
-    Blob.prototype.startCopyFromURL = function (copySource, options) {
-        var operationArguments = {
-            copySource: copySource,
+    startCopyFromURL(copySource, options) {
+        const operationArguments = {
+            copySource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, startCopyFromURLOperationSpec);
-    };
+    }
     /**
      * The Copy From URL operation copies a blob or an internet resource to a new blob. It will not return
      * a response until the copy is complete.
@@ -75275,13 +74046,13 @@ var Blob$1 = /** @class */ (function () {
      *                   access signature.
      * @param options The options parameters.
      */
-    Blob.prototype.copyFromURL = function (copySource, options) {
-        var operationArguments = {
-            copySource: copySource,
+    copyFromURL(copySource, options) {
+        const operationArguments = {
+            copySource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, copyFromURLOperationSpec);
-    };
+    }
     /**
      * The Abort Copy From URL operation aborts a pending Copy From URL operation, and leaves a destination
      * blob with zero length and full metadata.
@@ -75289,13 +74060,13 @@ var Blob$1 = /** @class */ (function () {
      *               operation.
      * @param options The options parameters.
      */
-    Blob.prototype.abortCopyFromURL = function (copyId, options) {
-        var operationArguments = {
-            copyId: copyId,
+    abortCopyFromURL(copyId, options) {
+        const operationArguments = {
+            copyId,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, abortCopyFromURLOperationSpec);
-    };
+    }
     /**
      * The Set Tier operation sets the tier on a blob. The operation is allowed on a page blob in a premium
      * storage account and on a block blob in a blob storage account (locally redundant storage only). A
@@ -75305,59 +74076,58 @@ var Blob$1 = /** @class */ (function () {
      * @param tier Indicates the tier to be set on the blob.
      * @param options The options parameters.
      */
-    Blob.prototype.setTier = function (tier, options) {
-        var operationArguments = {
-            tier: tier,
+    setTier(tier, options) {
+        const operationArguments = {
+            tier,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setTierOperationSpec);
-    };
+    }
     /**
      * Returns the sku name and account kind
      * @param options The options parameters.
      */
-    Blob.prototype.getAccountInfo = function (options) {
-        var operationArguments = {
+    getAccountInfo(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getAccountInfoOperationSpec$2);
-    };
+    }
     /**
      * The Query operation enables users to select/project on blob data by providing simple query
      * expressions.
      * @param options The options parameters.
      */
-    Blob.prototype.query = function (options) {
-        var operationArguments = {
+    query(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, queryOperationSpec);
-    };
+    }
     /**
      * The Get Tags operation enables users to get the tags associated with a blob.
      * @param options The options parameters.
      */
-    Blob.prototype.getTags = function (options) {
-        var operationArguments = {
+    getTags(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getTagsOperationSpec);
-    };
+    }
     /**
      * The Set Tags operation enables users to set tags on a blob.
      * @param options The options parameters.
      */
-    Blob.prototype.setTags = function (options) {
-        var operationArguments = {
+    setTags(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, setTagsOperationSpec);
-    };
-    return Blob;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var downloadOperationSpec = {
+const xmlSerializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const downloadOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -75406,7 +74176,7 @@ var downloadOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var getPropertiesOperationSpec$2 = {
+const getPropertiesOperationSpec$2 = {
     path: "/{containerName}/{blob}",
     httpMethod: "HEAD",
     responses: {
@@ -75441,7 +74211,7 @@ var getPropertiesOperationSpec$2 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var deleteOperationSpec$1 = {
+const deleteOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "DELETE",
     responses: {
@@ -75475,7 +74245,7 @@ var deleteOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setAccessControlOperationSpec = {
+const setAccessControlOperationSpec = {
     path: "/{filesystem}/{path}",
     httpMethod: "PATCH",
     responses: {
@@ -75506,7 +74276,7 @@ var setAccessControlOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var getAccessControlOperationSpec = {
+const getAccessControlOperationSpec = {
     path: "/{filesystem}/{path}",
     httpMethod: "HEAD",
     responses: {
@@ -75537,7 +74307,7 @@ var getAccessControlOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var renameOperationSpec$1 = {
+const renameOperationSpec$1 = {
     path: "/{filesystem}/{path}",
     httpMethod: "PUT",
     responses: {
@@ -75578,7 +74348,7 @@ var renameOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var undeleteOperationSpec = {
+const undeleteOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75600,7 +74370,7 @@ var undeleteOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setExpiryOperationSpec = {
+const setExpiryOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75624,7 +74394,7 @@ var setExpiryOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setHttpHeadersOperationSpec = {
+const setHttpHeadersOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75658,7 +74428,7 @@ var setHttpHeadersOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setMetadataOperationSpec$1 = {
+const setMetadataOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75691,7 +74461,7 @@ var setMetadataOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var acquireLeaseOperationSpec$1 = {
+const acquireLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75721,7 +74491,7 @@ var acquireLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var releaseLeaseOperationSpec$1 = {
+const releaseLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75750,7 +74520,7 @@ var releaseLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var renewLeaseOperationSpec$1 = {
+const renewLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75779,7 +74549,7 @@ var renewLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var changeLeaseOperationSpec$1 = {
+const changeLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75809,7 +74579,7 @@ var changeLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var breakLeaseOperationSpec$1 = {
+const breakLeaseOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75838,7 +74608,7 @@ var breakLeaseOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var createSnapshotOperationSpec = {
+const createSnapshotOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75871,7 +74641,7 @@ var createSnapshotOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var startCopyFromURLOperationSpec = {
+const startCopyFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75910,7 +74680,7 @@ var startCopyFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var copyFromURLOperationSpec = {
+const copyFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75948,7 +74718,7 @@ var copyFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var abortCopyFromURLOperationSpec = {
+const abortCopyFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -75976,7 +74746,7 @@ var abortCopyFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setTierOperationSpec = {
+const setTierOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76010,7 +74780,7 @@ var setTierOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var getAccountInfoOperationSpec$2 = {
+const getAccountInfoOperationSpec$2 = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -76028,7 +74798,7 @@ var getAccountInfoOperationSpec$2 = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var queryOperationSpec = {
+const queryOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "POST",
     responses: {
@@ -76078,7 +74848,7 @@ var queryOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer$2
 };
-var getTagsOperationSpec = {
+const getTagsOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -76108,7 +74878,7 @@ var getTagsOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$2
 };
-var setTagsOperationSpec = {
+const setTagsOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76151,12 +74921,12 @@ var setTagsOperationSpec = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a PageBlob. */
-var PageBlob = /** @class */ (function () {
+class PageBlob {
     /**
      * Initialize a new instance of the class PageBlob class.
      * @param client Reference to the service client
      */
-    function PageBlob(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -76166,40 +74936,40 @@ var PageBlob = /** @class */ (function () {
      *                          page blob size must be aligned to a 512-byte boundary.
      * @param options The options parameters.
      */
-    PageBlob.prototype.create = function (contentLength, blobContentLength, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            blobContentLength: blobContentLength,
+    create(contentLength, blobContentLength, options) {
+        const operationArguments = {
+            contentLength,
+            blobContentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, createOperationSpec$1);
-    };
+    }
     /**
      * The Upload Pages operation writes a range of pages to a page blob
      * @param contentLength The length of the request.
      * @param body Initial data
      * @param options The options parameters.
      */
-    PageBlob.prototype.uploadPages = function (contentLength, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            body: body,
+    uploadPages(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, uploadPagesOperationSpec);
-    };
+    }
     /**
      * The Clear Pages operation clears a set of pages from a page blob
      * @param contentLength The length of the request.
      * @param options The options parameters.
      */
-    PageBlob.prototype.clearPages = function (contentLength, options) {
-        var operationArguments = {
-            contentLength: contentLength,
+    clearPages(contentLength, options) {
+        const operationArguments = {
+            contentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, clearPagesOperationSpec);
-    };
+    }
     /**
      * The Upload Pages operation writes a range of pages to a page blob where the contents are read from a
      * URL
@@ -76211,51 +74981,51 @@ var PageBlob = /** @class */ (function () {
      *              aligned and range-end is required.
      * @param options The options parameters.
      */
-    PageBlob.prototype.uploadPagesFromURL = function (sourceUrl, sourceRange, contentLength, range, options) {
-        var operationArguments = {
-            sourceUrl: sourceUrl,
-            sourceRange: sourceRange,
-            contentLength: contentLength,
-            range: range,
+    uploadPagesFromURL(sourceUrl, sourceRange, contentLength, range, options) {
+        const operationArguments = {
+            sourceUrl,
+            sourceRange,
+            contentLength,
+            range,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, uploadPagesFromURLOperationSpec);
-    };
+    }
     /**
      * The Get Page Ranges operation returns the list of valid page ranges for a page blob or snapshot of a
      * page blob
      * @param options The options parameters.
      */
-    PageBlob.prototype.getPageRanges = function (options) {
-        var operationArguments = {
+    getPageRanges(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPageRangesOperationSpec);
-    };
+    }
     /**
      * The Get Page Ranges Diff operation returns the list of valid page ranges for a page blob that were
      * changed between target blob and previous snapshot.
      * @param options The options parameters.
      */
-    PageBlob.prototype.getPageRangesDiff = function (options) {
-        var operationArguments = {
+    getPageRangesDiff(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getPageRangesDiffOperationSpec);
-    };
+    }
     /**
      * Resize the Blob
      * @param blobContentLength This header specifies the maximum size for the page blob, up to 1 TB. The
      *                          page blob size must be aligned to a 512-byte boundary.
      * @param options The options parameters.
      */
-    PageBlob.prototype.resize = function (blobContentLength, options) {
-        var operationArguments = {
-            blobContentLength: blobContentLength,
+    resize(blobContentLength, options) {
+        const operationArguments = {
+            blobContentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, resizeOperationSpec);
-    };
+    }
     /**
      * Update the sequence number of the blob
      * @param sequenceNumberAction Required if the x-ms-blob-sequence-number header is set for the request.
@@ -76263,13 +75033,13 @@ var PageBlob = /** @class */ (function () {
      *                             blob's sequence number
      * @param options The options parameters.
      */
-    PageBlob.prototype.updateSequenceNumber = function (sequenceNumberAction, options) {
-        var operationArguments = {
-            sequenceNumberAction: sequenceNumberAction,
+    updateSequenceNumber(sequenceNumberAction, options) {
+        const operationArguments = {
+            sequenceNumberAction,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, updateSequenceNumberOperationSpec);
-    };
+    }
     /**
      * The Copy Incremental operation copies a snapshot of the source page blob to a destination page blob.
      * The snapshot is copied such that only the differential changes between the previously copied
@@ -76282,19 +75052,18 @@ var PageBlob = /** @class */ (function () {
      *                   access signature.
      * @param options The options parameters.
      */
-    PageBlob.prototype.copyIncremental = function (copySource, options) {
-        var operationArguments = {
-            copySource: copySource,
+    copyIncremental(copySource, options) {
+        const operationArguments = {
+            copySource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, copyIncrementalOperationSpec);
-    };
-    return PageBlob;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$3 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);
-var createOperationSpec$1 = {
+const xmlSerializer$3 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const createOperationSpec$1 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76339,7 +75108,7 @@ var createOperationSpec$1 = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var uploadPagesOperationSpec = {
+const uploadPagesOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76379,9 +75148,9 @@ var uploadPagesOperationSpec = {
         ifSequenceNumberEqualTo
     ],
     mediaType: "binary",
-    serializer: serializer
+    serializer
 };
-var clearPagesOperationSpec = {
+const clearPagesOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76419,7 +75188,7 @@ var clearPagesOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var uploadPagesFromURLOperationSpec = {
+const uploadPagesFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76465,7 +75234,7 @@ var uploadPagesFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var getPageRangesOperationSpec = {
+const getPageRangesOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -76499,7 +75268,7 @@ var getPageRangesOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var getPageRangesDiffOperationSpec = {
+const getPageRangesDiffOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -76535,7 +75304,7 @@ var getPageRangesDiffOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var resizeOperationSpec = {
+const resizeOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76568,7 +75337,7 @@ var resizeOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var updateSequenceNumberOperationSpec = {
+const updateSequenceNumberOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76598,7 +75367,7 @@ var updateSequenceNumberOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$3
 };
-var copyIncrementalOperationSpec = {
+const copyIncrementalOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76635,12 +75404,12 @@ var copyIncrementalOperationSpec = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a AppendBlob. */
-var AppendBlob = /** @class */ (function () {
+class AppendBlob {
     /**
      * Initialize a new instance of the class AppendBlob class.
      * @param client Reference to the service client
      */
-    function AppendBlob(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -76648,13 +75417,13 @@ var AppendBlob = /** @class */ (function () {
      * @param contentLength The length of the request.
      * @param options The options parameters.
      */
-    AppendBlob.prototype.create = function (contentLength, options) {
-        var operationArguments = {
-            contentLength: contentLength,
+    create(contentLength, options) {
+        const operationArguments = {
+            contentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, createOperationSpec$2);
-    };
+    }
     /**
      * The Append Block operation commits a new block of data to the end of an existing append blob. The
      * Append Block operation is permitted only if the blob was created with x-ms-blob-type set to
@@ -76663,14 +75432,14 @@ var AppendBlob = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    AppendBlob.prototype.appendBlock = function (contentLength, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            body: body,
+    appendBlock(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, appendBlockOperationSpec);
-    };
+    }
     /**
      * The Append Block operation commits a new block of data to the end of an existing append blob where
      * the contents are read from a source url. The Append Block operation is permitted only if the blob
@@ -76680,31 +75449,30 @@ var AppendBlob = /** @class */ (function () {
      * @param contentLength The length of the request.
      * @param options The options parameters.
      */
-    AppendBlob.prototype.appendBlockFromUrl = function (sourceUrl, contentLength, options) {
-        var operationArguments = {
-            sourceUrl: sourceUrl,
-            contentLength: contentLength,
+    appendBlockFromUrl(sourceUrl, contentLength, options) {
+        const operationArguments = {
+            sourceUrl,
+            contentLength,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, appendBlockFromUrlOperationSpec);
-    };
+    }
     /**
      * The Seal operation seals the Append Blob to make it read-only. Seal is supported only on version
      * 2019-12-12 version or later.
      * @param options The options parameters.
      */
-    AppendBlob.prototype.seal = function (options) {
-        var operationArguments = {
+    seal(options) {
+        const operationArguments = {
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, sealOperationSpec);
-    };
-    return AppendBlob;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$4 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var serializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ false);
-var createOperationSpec$2 = {
+const xmlSerializer$4 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer$1 = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const createOperationSpec$2 = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76746,7 +75514,7 @@ var createOperationSpec$2 = {
     isXML: true,
     serializer: xmlSerializer$4
 };
-var appendBlockOperationSpec = {
+const appendBlockOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76785,7 +75553,7 @@ var appendBlockOperationSpec = {
     mediaType: "binary",
     serializer: serializer$1
 };
-var appendBlockFromUrlOperationSpec = {
+const appendBlockFromUrlOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76829,7 +75597,7 @@ var appendBlockFromUrlOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$4
 };
-var sealOperationSpec = {
+const sealOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -76866,12 +75634,12 @@ var sealOperationSpec = {
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
 /** Class representing a BlockBlob. */
-var BlockBlob = /** @class */ (function () {
+class BlockBlob {
     /**
      * Initialize a new instance of the class BlockBlob class.
      * @param client Reference to the service client
      */
-    function BlockBlob(client) {
+    constructor(client) {
         this.client = client;
     }
     /**
@@ -76883,14 +75651,14 @@ var BlockBlob = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    BlockBlob.prototype.upload = function (contentLength, body, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            body: body,
+    upload(contentLength, body, options) {
+        const operationArguments = {
+            contentLength,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, uploadOperationSpec);
-    };
+    }
     /**
      * The Put Blob from URL operation creates a new Block Blob where the contents of the blob are read
      * from a given URL.  This API is supported beginning with the 2020-04-08 version. Partial updates are
@@ -76904,14 +75672,14 @@ var BlockBlob = /** @class */ (function () {
      *                   access signature.
      * @param options The options parameters.
      */
-    BlockBlob.prototype.putBlobFromUrl = function (contentLength, copySource, options) {
-        var operationArguments = {
-            contentLength: contentLength,
-            copySource: copySource,
+    putBlobFromUrl(contentLength, copySource, options) {
+        const operationArguments = {
+            contentLength,
+            copySource,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, putBlobFromUrlOperationSpec);
-    };
+    }
     /**
      * The Stage Block operation creates a new block to be committed as part of a blob
      * @param blockId A valid Base64 string value that identifies the block. Prior to encoding, the string
@@ -76921,15 +75689,15 @@ var BlockBlob = /** @class */ (function () {
      * @param body Initial data
      * @param options The options parameters.
      */
-    BlockBlob.prototype.stageBlock = function (blockId, contentLength, body, options) {
-        var operationArguments = {
-            blockId: blockId,
-            contentLength: contentLength,
-            body: body,
+    stageBlock(blockId, contentLength, body, options) {
+        const operationArguments = {
+            blockId,
+            contentLength,
+            body,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, stageBlockOperationSpec);
-    };
+    }
     /**
      * The Stage Block operation creates a new block to be committed as part of a blob where the contents
      * are read from a URL.
@@ -76940,15 +75708,15 @@ var BlockBlob = /** @class */ (function () {
      * @param sourceUrl Specify a URL to the copy source.
      * @param options The options parameters.
      */
-    BlockBlob.prototype.stageBlockFromURL = function (blockId, contentLength, sourceUrl, options) {
-        var operationArguments = {
-            blockId: blockId,
-            contentLength: contentLength,
-            sourceUrl: sourceUrl,
+    stageBlockFromURL(blockId, contentLength, sourceUrl, options) {
+        const operationArguments = {
+            blockId,
+            contentLength,
+            sourceUrl,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, stageBlockFromURLOperationSpec);
-    };
+    }
     /**
      * The Commit Block List operation writes a blob by specifying the list of block IDs that make up the
      * blob. In order to be written as part of a blob, a block must have been successfully written to the
@@ -76960,13 +75728,13 @@ var BlockBlob = /** @class */ (function () {
      * @param blocks
      * @param options The options parameters.
      */
-    BlockBlob.prototype.commitBlockList = function (blocks, options) {
-        var operationArguments = {
-            blocks: blocks,
+    commitBlockList(blocks, options) {
+        const operationArguments = {
+            blocks,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, commitBlockListOperationSpec);
-    };
+    }
     /**
      * The Get Block List operation retrieves the list of blocks that have been uploaded as part of a block
      * blob
@@ -76974,19 +75742,18 @@ var BlockBlob = /** @class */ (function () {
      *                 blocks, or both lists together.
      * @param options The options parameters.
      */
-    BlockBlob.prototype.getBlockList = function (listType, options) {
-        var operationArguments = {
-            listType: listType,
+    getBlockList(listType, options) {
+        const operationArguments = {
+            listType,
             options: coreHttp.operationOptionsToRequestOptionsBase(options || {})
         };
         return this.client.sendOperationRequest(operationArguments, getBlockListOperationSpec);
-    };
-    return BlockBlob;
-}());
+    }
+}
 // Operation Specifications
-var xmlSerializer$5 = new coreHttp.Serializer(Mappers, /* isXml */ true);
-var serializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ false);
-var uploadOperationSpec = {
+const xmlSerializer$5 = new coreHttp.Serializer(Mappers, /* isXml */ true);
+const serializer$2 = new coreHttp.Serializer(Mappers, /* isXml */ false);
+const uploadOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -77032,7 +75799,7 @@ var uploadOperationSpec = {
     mediaType: "binary",
     serializer: serializer$2
 };
-var putBlobFromUrlOperationSpec = {
+const putBlobFromUrlOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -77084,7 +75851,7 @@ var putBlobFromUrlOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$5
 };
-var stageBlockOperationSpec = {
+const stageBlockOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -77120,7 +75887,7 @@ var stageBlockOperationSpec = {
     mediaType: "binary",
     serializer: serializer$2
 };
-var stageBlockFromURLOperationSpec = {
+const stageBlockFromURLOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -77160,7 +75927,7 @@ var stageBlockFromURLOperationSpec = {
     isXML: true,
     serializer: xmlSerializer$5
 };
-var commitBlockListOperationSpec = {
+const commitBlockListOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "PUT",
     responses: {
@@ -77207,7 +75974,7 @@ var commitBlockListOperationSpec = {
     mediaType: "xml",
     serializer: xmlSerializer$5
 };
-var getBlockListOperationSpec = {
+const getBlockListOperationSpec = {
     path: "/{containerName}/{blob}",
     httpMethod: "GET",
     responses: {
@@ -77242,23 +76009,23 @@ var getBlockListOperationSpec = {
 /**
  * The `@azure/logger` configuration for this package.
  */
-var logger = logger$1.createClientLogger("storage-blob");
+const logger = logger$1.createClientLogger("storage-blob");
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var SDK_VERSION = "12.6.0";
-var SERVICE_VERSION = "2020-08-04";
-var BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB
-var BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB
-var BLOCK_BLOB_MAX_BLOCKS = 50000;
-var DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB
-var DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB
-var DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;
+const SDK_VERSION = "12.7.0";
+const SERVICE_VERSION = "2020-08-04";
+const BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES = 256 * 1024 * 1024; // 256MB
+const BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES = 4000 * 1024 * 1024; // 4000MB
+const BLOCK_BLOB_MAX_BLOCKS = 50000;
+const DEFAULT_BLOCK_BUFFER_SIZE_BYTES = 8 * 1024 * 1024; // 8MB
+const DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES = 4 * 1024 * 1024; // 4MB
+const DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS = 5;
 /**
  * The OAuth scope to use with Azure Storage.
  */
-var StorageOAuthScopes = "https://storage.azure.com/.default";
-var URLConstants = {
+const StorageOAuthScopes = "https://storage.azure.com/.default";
+const URLConstants = {
     Parameters: {
         FORCE_BROWSER_NO_CACHE: "_",
         SIGNATURE: "sig",
@@ -77267,14 +76034,14 @@ var URLConstants = {
         TIMEOUT: "timeout"
     }
 };
-var HTTPURLConnection = {
+const HTTPURLConnection = {
     HTTP_ACCEPTED: 202,
     HTTP_CONFLICT: 409,
     HTTP_NOT_FOUND: 404,
     HTTP_PRECON_FAILED: 412,
     HTTP_RANGE_NOT_SATISFIABLE: 416
 };
-var HeaderConstants = {
+const HeaderConstants = {
     AUTHORIZATION: "Authorization",
     AUTHORIZATION_SCHEME: "Bearer",
     CONTENT_ENCODING: "Content-Encoding",
@@ -77299,16 +76066,16 @@ var HeaderConstants = {
     X_MS_ERROR_CODE: "x-ms-error-code",
     X_MS_VERSION: "x-ms-version"
 };
-var ETagNone = "";
-var ETagAny = "*";
-var SIZE_1_MB = 1 * 1024 * 1024;
-var BATCH_MAX_REQUEST = 256;
-var BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;
-var HTTP_LINE_ENDING = "\r\n";
-var HTTP_VERSION_1_1 = "HTTP/1.1";
-var EncryptionAlgorithmAES25 = "AES256";
-var DevelopmentConnectionString = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;";
-var StorageBlobLoggingAllowedHeaderNames = [
+const ETagNone = "";
+const ETagAny = "*";
+const SIZE_1_MB = 1 * 1024 * 1024;
+const BATCH_MAX_REQUEST = 256;
+const BATCH_MAX_PAYLOAD_IN_BYTES = 4 * SIZE_1_MB;
+const HTTP_LINE_ENDING = "\r\n";
+const HTTP_VERSION_1_1 = "HTTP/1.1";
+const EncryptionAlgorithmAES25 = "AES256";
+const DevelopmentConnectionString = `DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;`;
+const StorageBlobLoggingAllowedHeaderNames = [
     "Access-Control-Allow-Origin",
     "Cache-Control",
     "Content-Length",
@@ -77404,7 +76171,7 @@ var StorageBlobLoggingAllowedHeaderNames = [
     "x-ms-if-tags",
     "x-ms-source-if-tags"
 ];
-var StorageBlobLoggingAllowedQueryParameters = [
+const StorageBlobLoggingAllowedQueryParameters = [
     "comp",
     "maxresults",
     "rscc",
@@ -77494,8 +76261,8 @@ var StorageBlobLoggingAllowedQueryParameters = [
  * @param url -
  */
 function escapeURLPath(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var path = urlParsed.getPath();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let path = urlParsed.getPath();
     path = path || "/";
     path = escape(path);
     urlParsed.setPath(path);
@@ -77504,12 +76271,11 @@ function escapeURLPath(url) {
 function getProxyUriFromDevConnString(connectionString) {
     // Development Connection String
     // https://docs.microsoft.com/en-us/azure/storage/common/storage-configure-connection-string#connect-to-the-emulator-account-using-the-well-known-account-name-and-key
-    var proxyUri = "";
+    let proxyUri = "";
     if (connectionString.search("DevelopmentStorageProxyUri=") !== -1) {
         // CONNECTION_STRING=UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri
-        var matchCredentials = connectionString.split(";");
-        for (var _i = 0, matchCredentials_1 = matchCredentials; _i < matchCredentials_1.length; _i++) {
-            var element = matchCredentials_1[_i];
+        const matchCredentials = connectionString.split(";");
+        for (const element of matchCredentials) {
             if (element.trim().startsWith("DevelopmentStorageProxyUri=")) {
                 proxyUri = element.trim().match("DevelopmentStorageProxyUri=(.*)")[1];
             }
@@ -77518,9 +76284,8 @@ function getProxyUriFromDevConnString(connectionString) {
     return proxyUri;
 }
 function getValueInConnString(connectionString, argument) {
-    var elements = connectionString.split(";");
-    for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {
-        var element = elements_1[_i];
+    const elements = connectionString.split(";");
+    for (const element of elements) {
         if (element.trim().startsWith(argument)) {
             return element.trim().match(argument + "=(.*)")[1];
         }
@@ -77534,24 +76299,24 @@ function getValueInConnString(connectionString, argument) {
  * @returns String key value pairs of the storage account's url and credentials.
  */
 function extractConnectionStringParts(connectionString) {
-    var proxyUri = "";
+    let proxyUri = "";
     if (connectionString.startsWith("UseDevelopmentStorage=true")) {
         // Development connection string
         proxyUri = getProxyUriFromDevConnString(connectionString);
         connectionString = DevelopmentConnectionString;
     }
     // Matching BlobEndpoint in the Account connection string
-    var blobEndpoint = getValueInConnString(connectionString, "BlobEndpoint");
+    let blobEndpoint = getValueInConnString(connectionString, "BlobEndpoint");
     // Slicing off '/' at the end if exists
     // (The methods that use `extractConnectionStringParts` expect the url to not have `/` at the end)
     blobEndpoint = blobEndpoint.endsWith("/") ? blobEndpoint.slice(0, -1) : blobEndpoint;
     if (connectionString.search("DefaultEndpointsProtocol=") !== -1 &&
         connectionString.search("AccountKey=") !== -1) {
         // Account connection string
-        var defaultEndpointsProtocol = "";
-        var accountName = "";
-        var accountKey = Buffer.from("accountKey", "base64");
-        var endpointSuffix = "";
+        let defaultEndpointsProtocol = "";
+        let accountName = "";
+        let accountKey = Buffer.from("accountKey", "base64");
+        let endpointSuffix = "";
         // Get account name and key
         accountName = getValueInConnString(connectionString, "AccountName");
         accountKey = Buffer.from(getValueInConnString(connectionString, "AccountKey"), "base64");
@@ -77559,7 +76324,7 @@ function extractConnectionStringParts(connectionString) {
             // BlobEndpoint is not present in the Account connection string
             // Can be obtained from `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`
             defaultEndpointsProtocol = getValueInConnString(connectionString, "DefaultEndpointsProtocol");
-            var protocol = defaultEndpointsProtocol.toLowerCase();
+            const protocol = defaultEndpointsProtocol.toLowerCase();
             if (protocol !== "https" && protocol !== "http") {
                 throw new Error("Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'");
             }
@@ -77567,7 +76332,7 @@ function extractConnectionStringParts(connectionString) {
             if (!endpointSuffix) {
                 throw new Error("Invalid EndpointSuffix in the provided Connection String");
             }
-            blobEndpoint = defaultEndpointsProtocol + "://" + accountName + ".blob." + endpointSuffix;
+            blobEndpoint = `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;
         }
         if (!accountName) {
             throw new Error("Invalid AccountName in the provided Connection String");
@@ -77578,22 +76343,22 @@ function extractConnectionStringParts(connectionString) {
         return {
             kind: "AccountConnString",
             url: blobEndpoint,
-            accountName: accountName,
-            accountKey: accountKey,
-            proxyUri: proxyUri
+            accountName,
+            accountKey,
+            proxyUri
         };
     }
     else {
         // SAS connection string
-        var accountSas = getValueInConnString(connectionString, "SharedAccessSignature");
-        var accountName = getAccountNameFromUrl(blobEndpoint);
+        const accountSas = getValueInConnString(connectionString, "SharedAccessSignature");
+        const accountName = getAccountNameFromUrl(blobEndpoint);
         if (!blobEndpoint) {
             throw new Error("Invalid BlobEndpoint in the provided SAS Connection String");
         }
         else if (!accountSas) {
             throw new Error("Invalid SharedAccessSignature in the provided SAS Connection String");
         }
-        return { kind: "SASConnString", url: blobEndpoint, accountName: accountName, accountSas: accountSas };
+        return { kind: "SASConnString", url: blobEndpoint, accountName, accountSas };
     }
 }
 /**
@@ -77617,9 +76382,9 @@ function escape(text) {
  * @returns An updated URL string
  */
 function appendToURLPath(url, name) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var path = urlParsed.getPath();
-    path = path ? (path.endsWith("/") ? "" + path + name : path + "/" + name) : name;
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let path = urlParsed.getPath();
+    path = path ? (path.endsWith("/") ? `${path}${name}` : `${path}/${name}`) : name;
     urlParsed.setPath(path);
     return urlParsed.toString();
 }
@@ -77633,7 +76398,7 @@ function appendToURLPath(url, name) {
  * @returns An updated URL string
  */
 function setURLParameter(url, name, value) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     urlParsed.setQueryParameter(name, value);
     return urlParsed.toString();
 }
@@ -77644,7 +76409,7 @@ function setURLParameter(url, name, value) {
  * @param name -
  */
 function getURLParameter(url, name) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getQueryParameterValue(name);
 }
 /**
@@ -77655,7 +76420,7 @@ function getURLParameter(url, name) {
  * @returns An updated URL string
  */
 function setURLHost(url, host) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     urlParsed.setHost(host);
     return urlParsed.toString();
 }
@@ -77665,7 +76430,7 @@ function setURLHost(url, host) {
  * @param url - Source URL string
  */
 function getURLPath(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getPath();
 }
 /**
@@ -77674,7 +76439,7 @@ function getURLPath(url) {
  * @param url - Source URL string
  */
 function getURLScheme(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
+    const urlParsed = coreHttp.URLBuilder.parse(url);
     return urlParsed.getScheme();
 }
 /**
@@ -77683,17 +76448,17 @@ function getURLScheme(url) {
  * @param url - Source URL string
  */
 function getURLPathAndQuery(url) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var pathString = urlParsed.getPath();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    const pathString = urlParsed.getPath();
     if (!pathString) {
         throw new RangeError("Invalid url without valid path.");
     }
-    var queryString = urlParsed.getQuery() || "";
+    let queryString = urlParsed.getQuery() || "";
     queryString = queryString.trim();
     if (queryString != "") {
-        queryString = queryString.startsWith("?") ? queryString : "?" + queryString; // Ensure query string start with '?'
+        queryString = queryString.startsWith("?") ? queryString : `?${queryString}`; // Ensure query string start with '?'
     }
-    return "" + pathString + queryString;
+    return `${pathString}${queryString}`;
 }
 /**
  * Get URL query key value pairs from an URL string.
@@ -77701,24 +76466,23 @@ function getURLPathAndQuery(url) {
  * @param url -
  */
 function getURLQueries(url) {
-    var queryString = coreHttp.URLBuilder.parse(url).getQuery();
+    let queryString = coreHttp.URLBuilder.parse(url).getQuery();
     if (!queryString) {
         return {};
     }
     queryString = queryString.trim();
     queryString = queryString.startsWith("?") ? queryString.substr(1) : queryString;
-    var querySubStrings = queryString.split("&");
-    querySubStrings = querySubStrings.filter(function (value) {
-        var indexOfEqual = value.indexOf("=");
-        var lastIndexOfEqual = value.lastIndexOf("=");
+    let querySubStrings = queryString.split("&");
+    querySubStrings = querySubStrings.filter((value) => {
+        const indexOfEqual = value.indexOf("=");
+        const lastIndexOfEqual = value.lastIndexOf("=");
         return (indexOfEqual > 0 && indexOfEqual === lastIndexOfEqual && lastIndexOfEqual < value.length - 1);
     });
-    var queries = {};
-    for (var _i = 0, querySubStrings_1 = querySubStrings; _i < querySubStrings_1.length; _i++) {
-        var querySubString = querySubStrings_1[_i];
-        var splitResults = querySubString.split("=");
-        var key = splitResults[0];
-        var value = splitResults[1];
+    const queries = {};
+    for (const querySubString of querySubStrings) {
+        const splitResults = querySubString.split("=");
+        const key = splitResults[0];
+        const value = splitResults[1];
         queries[key] = value;
     }
     return queries;
@@ -77731,8 +76495,8 @@ function getURLQueries(url) {
  * @returns An updated URL string.
  */
 function appendToURLQuery(url, queryParts) {
-    var urlParsed = coreHttp.URLBuilder.parse(url);
-    var query = urlParsed.getQuery();
+    const urlParsed = coreHttp.URLBuilder.parse(url);
+    let query = urlParsed.getQuery();
     if (query) {
         query += "&" + queryParts;
     }
@@ -77750,10 +76514,9 @@ function appendToURLQuery(url, queryParts) {
  *                                          If false, YYYY-MM-DDThh:mm:ssZ will be returned.
  * @returns Date string in ISO8061 format, with or without 7 milliseconds component
  */
-function truncatedISO8061Date(date, withMilliseconds) {
-    if (withMilliseconds === void 0) { withMilliseconds = true; }
+function truncatedISO8061Date(date, withMilliseconds = true) {
     // Date.toISOString() will return like "2018-10-29T06:34:36.139Z"
-    var dateString = date.toISOString();
+    const dateString = date.toISOString();
     return withMilliseconds
         ? dateString.substring(0, dateString.length - 1) + "0000" + "Z"
         : dateString.substring(0, dateString.length - 5) + "Z";
@@ -77773,14 +76536,14 @@ function base64encode(content) {
  */
 function generateBlockID(blockIDPrefix, blockIndex) {
     // To generate a 64 bytes base64 string, source string should be 48
-    var maxSourceStringLength = 48;
+    const maxSourceStringLength = 48;
     // A blob can have a maximum of 100,000 uncommitted blocks at any given time
-    var maxBlockIndexLength = 6;
-    var maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;
+    const maxBlockIndexLength = 6;
+    const maxAllowedBlockIDPrefixLength = maxSourceStringLength - maxBlockIndexLength;
     if (blockIDPrefix.length > maxAllowedBlockIDPrefixLength) {
         blockIDPrefix = blockIDPrefix.slice(0, maxAllowedBlockIDPrefixLength);
     }
-    var res = blockIDPrefix +
+    const res = blockIDPrefix +
         padStart(blockIndex.toString(), maxSourceStringLength - blockIDPrefix.length, "0");
     return base64encode(res);
 }
@@ -77791,29 +76554,25 @@ function generateBlockID(blockIDPrefix, blockIndex) {
  * @param aborter -
  * @param abortError -
  */
-function delay(timeInMs, aborter, abortError) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    var timeout;
-                    var abortHandler = function () {
-                        if (timeout !== undefined) {
-                            clearTimeout(timeout);
-                        }
-                        reject(abortError);
-                    };
-                    var resolveHandler = function () {
-                        if (aborter !== undefined) {
-                            aborter.removeEventListener("abort", abortHandler);
-                        }
-                        resolve();
-                    };
-                    timeout = setTimeout(resolveHandler, timeInMs);
-                    if (aborter !== undefined) {
-                        aborter.addEventListener("abort", abortHandler);
-                    }
-                })];
-        });
+async function delay(timeInMs, aborter, abortError) {
+    return new Promise((resolve, reject) => {
+        let timeout;
+        const abortHandler = () => {
+            if (timeout !== undefined) {
+                clearTimeout(timeout);
+            }
+            reject(abortError);
+        };
+        const resolveHandler = () => {
+            if (aborter !== undefined) {
+                aborter.removeEventListener("abort", abortHandler);
+            }
+            resolve();
+        };
+        timeout = setTimeout(resolveHandler, timeInMs);
+        if (aborter !== undefined) {
+            aborter.addEventListener("abort", abortHandler);
+        }
     });
 }
 /**
@@ -77823,8 +76582,7 @@ function delay(timeInMs, aborter, abortError) {
  * @param targetLength -
  * @param padString -
  */
-function padStart(currentString, targetLength, padString) {
-    if (padString === void 0) { padString = " "; }
+function padStart(currentString, targetLength, padString = " ") {
     // TS doesn't know this code needs to run downlevel sometimes.
     // @ts-expect-error
     if (String.prototype.padStart) {
@@ -77857,8 +76615,8 @@ function iEqual(str1, str2) {
  * @returns with the account name
  */
 function getAccountNameFromUrl(url) {
-    var parsedUrl = coreHttp.URLBuilder.parse(url);
-    var accountName;
+    const parsedUrl = coreHttp.URLBuilder.parse(url);
+    let accountName;
     try {
         if (parsedUrl.getHost().split(".")[1] === "blob") {
             // `${defaultEndpointsProtocol}://${accountName}.blob.${endpointSuffix}`;
@@ -77884,7 +76642,7 @@ function isIpEndpointStyle(parsedUrl) {
     if (parsedUrl.getHost() == undefined) {
         return false;
     }
-    var host = parsedUrl.getHost() + (parsedUrl.getPort() == undefined ? "" : ":" + parsedUrl.getPort());
+    const host = parsedUrl.getHost() + (parsedUrl.getPort() == undefined ? "" : ":" + parsedUrl.getPort());
     // Case 1: Ipv6, use a broad regex to find out candidates whose host contains two ':'.
     // Case 2: localhost(:port), use broad regex to match port part.
     // Case 3: Ipv4, use broad regex which just check if host contains Ipv4.
@@ -77900,11 +76658,11 @@ function toBlobTagsString(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var tagPairs = [];
-    for (var key in tags) {
+    const tagPairs = [];
+    for (const key in tags) {
         if (tags.hasOwnProperty(key)) {
-            var value = tags[key];
-            tagPairs.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
+            const value = tags[key];
+            tagPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
         }
     }
     return tagPairs.join("&");
@@ -77918,15 +76676,15 @@ function toBlobTags(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var res = {
+    const res = {
         blobTagSet: []
     };
-    for (var key in tags) {
+    for (const key in tags) {
         if (tags.hasOwnProperty(key)) {
-            var value = tags[key];
+            const value = tags[key];
             res.blobTagSet.push({
-                key: key,
-                value: value
+                key,
+                value
             });
         }
     }
@@ -77941,9 +76699,8 @@ function toTags(tags) {
     if (tags === undefined) {
         return undefined;
     }
-    var res = {};
-    for (var _i = 0, _a = tags.blobTagSet; _i < _a.length; _i++) {
-        var blobTag = _a[_i];
+    const res = {};
+    for (const blobTag of tags.blobTagSet) {
         res[blobTag.key] = blobTag.value;
     }
     return res;
@@ -78002,18 +76759,18 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
         // the policy id should already be stored in the ObjectReplicationDestinationPolicyId.
         return undefined;
     }
-    var orProperties = [];
-    var _loop_1 = function (key) {
-        var ids = key.split("_");
-        var policyPrefix = "or-";
+    const orProperties = [];
+    for (const key in objectReplicationRecord) {
+        const ids = key.split("_");
+        const policyPrefix = "or-";
         if (ids[0].startsWith(policyPrefix)) {
             ids[0] = ids[0].substring(policyPrefix.length);
         }
-        var rule = {
+        const rule = {
             ruleId: ids[1],
             replicationStatus: objectReplicationRecord[key]
         };
-        var policyIndex = orProperties.findIndex(function (policy) { return policy.policyId === ids[0]; });
+        const policyIndex = orProperties.findIndex((policy) => policy.policyId === ids[0]);
         if (policyIndex > -1) {
             orProperties[policyIndex].rules.push(rule);
         }
@@ -78023,9 +76780,6 @@ function parseObjectReplicationRecord(objectReplicationRecord) {
                 rules: [rule]
             });
         }
-    };
-    for (var key in objectReplicationRecord) {
-        _loop_1(key);
     }
     return orProperties;
 }
@@ -78052,51 +76806,42 @@ function attachCredential(thing, credential) {
  *
  * 3. Remove content-length header to avoid browsers warning
  */
-var StorageBrowserPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageBrowserPolicy, _super);
+class StorageBrowserPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of StorageBrowserPolicy.
      * @param nextPolicy -
      * @param options -
      */
-    function StorageBrowserPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
     /**
      * Sends out request.
      *
      * @param request -
      */
-    StorageBrowserPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                {
-                    return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-                }
-            });
-        });
-    };
-    return StorageBrowserPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async sendRequest(request) {
+        {
+            return this._nextPolicy.sendRequest(request);
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * StorageBrowserPolicyFactory is a factory class helping generating StorageBrowserPolicy objects.
  */
-var StorageBrowserPolicyFactory = /** @class */ (function () {
-    function StorageBrowserPolicyFactory() {
-    }
+class StorageBrowserPolicyFactory {
     /**
      * Creates a StorageBrowserPolicyFactory object.
      *
      * @param nextPolicy -
      * @param options -
      */
-    StorageBrowserPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageBrowserPolicy(nextPolicy, options);
-    };
-    return StorageBrowserPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 (function (StorageRetryPolicyType) {
@@ -78110,7 +76855,7 @@ var StorageBrowserPolicyFactory = /** @class */ (function () {
     StorageRetryPolicyType[StorageRetryPolicyType["FIXED"] = 1] = "FIXED";
 })(exports.StorageRetryPolicyType || (exports.StorageRetryPolicyType = {}));
 // Default values of StorageRetryOptions
-var DEFAULT_RETRY_OPTIONS = {
+const DEFAULT_RETRY_OPTIONS = {
     maxRetryDelayInMs: 120 * 1000,
     maxTries: 4,
     retryDelayInMs: 4 * 1000,
@@ -78118,12 +76863,11 @@ var DEFAULT_RETRY_OPTIONS = {
     secondaryHost: "",
     tryTimeoutInMs: undefined // Use server side default timeout strategy
 };
-var RETRY_ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
+const RETRY_ABORT_ERROR = new abortController.AbortError("The operation was aborted.");
 /**
  * Retry policy with exponential retry and linear retry implemented.
  */
-var StorageRetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageRetryPolicy, _super);
+class StorageRetryPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of RetryPolicy.
      *
@@ -78131,11 +76875,10 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
      * @param options -
      * @param retryOptions -
      */
-    function StorageRetryPolicy(nextPolicy, options, retryOptions) {
-        if (retryOptions === void 0) { retryOptions = DEFAULT_RETRY_OPTIONS; }
-        var _this = _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options, retryOptions = DEFAULT_RETRY_OPTIONS) {
+        super(nextPolicy, options);
         // Initialize retry options
-        _this.retryOptions = {
+        this.retryOptions = {
             retryPolicyType: retryOptions.retryPolicyType
                 ? retryOptions.retryPolicyType
                 : DEFAULT_RETRY_OPTIONS.retryPolicyType,
@@ -78157,20 +76900,15 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
                 ? retryOptions.secondaryHost
                 : DEFAULT_RETRY_OPTIONS.secondaryHost
         };
-        return _this;
     }
     /**
      * Sends request.
      *
      * @param request -
      */
-    StorageRetryPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, this.attemptSendRequest(request, false, 1)];
-            });
-        });
-    };
+    async sendRequest(request) {
+        return this.attemptSendRequest(request, false, 1);
+    }
     /**
      * Decide and perform next retry. Won't mutate request parameter.
      *
@@ -78181,52 +76919,37 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
      * @param attempt -           How many retries has been attempted to performed, starting from 1, which includes
      *                                   the attempt will be performed by this method call.
      */
-    StorageRetryPolicy.prototype.attemptSendRequest = function (request, secondaryHas404, attempt) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var newRequest, isPrimaryRetry, response, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        newRequest = request.clone();
-                        isPrimaryRetry = secondaryHas404 ||
-                            !this.retryOptions.secondaryHost ||
-                            !(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
-                            attempt % 2 === 1;
-                        if (!isPrimaryRetry) {
-                            newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);
-                        }
-                        // Set the server-side timeout query parameter "timeout=[seconds]"
-                        if (this.retryOptions.tryTimeoutInMs) {
-                            newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
-                        }
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        logger.info("RetryPolicy: =====> Try=" + attempt + " " + (isPrimaryRetry ? "Primary" : "Secondary"));
-                        return [4 /*yield*/, this._nextPolicy.sendRequest(newRequest)];
-                    case 2:
-                        response = _a.sent();
-                        if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
-                            return [2 /*return*/, response];
-                        }
-                        secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
-                        return [3 /*break*/, 4];
-                    case 3:
-                        err_1 = _a.sent();
-                        logger.error("RetryPolicy: Caught error, message: " + err_1.message + ", code: " + err_1.code);
-                        if (!this.shouldRetry(isPrimaryRetry, attempt, response, err_1)) {
-                            throw err_1;
-                        }
-                        return [3 /*break*/, 4];
-                    case 4: return [4 /*yield*/, this.delay(isPrimaryRetry, attempt, request.abortSignal)];
-                    case 5:
-                        _a.sent();
-                        return [4 /*yield*/, this.attemptSendRequest(request, secondaryHas404, ++attempt)];
-                    case 6: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
+    async attemptSendRequest(request, secondaryHas404, attempt) {
+        const newRequest = request.clone();
+        const isPrimaryRetry = secondaryHas404 ||
+            !this.retryOptions.secondaryHost ||
+            !(request.method === "GET" || request.method === "HEAD" || request.method === "OPTIONS") ||
+            attempt % 2 === 1;
+        if (!isPrimaryRetry) {
+            newRequest.url = setURLHost(newRequest.url, this.retryOptions.secondaryHost);
+        }
+        // Set the server-side timeout query parameter "timeout=[seconds]"
+        if (this.retryOptions.tryTimeoutInMs) {
+            newRequest.url = setURLParameter(newRequest.url, URLConstants.Parameters.TIMEOUT, Math.floor(this.retryOptions.tryTimeoutInMs / 1000).toString());
+        }
+        let response;
+        try {
+            logger.info(`RetryPolicy: =====> Try=${attempt} ${isPrimaryRetry ? "Primary" : "Secondary"}`);
+            response = await this._nextPolicy.sendRequest(newRequest);
+            if (!this.shouldRetry(isPrimaryRetry, attempt, response)) {
+                return response;
+            }
+            secondaryHas404 = secondaryHas404 || (!isPrimaryRetry && response.status === 404);
+        }
+        catch (err) {
+            logger.error(`RetryPolicy: Caught error, message: ${err.message}, code: ${err.code}`);
+            if (!this.shouldRetry(isPrimaryRetry, attempt, response, err)) {
+                throw err;
+            }
+        }
+        await this.delay(isPrimaryRetry, attempt, request.abortSignal);
+        return await this.attemptSendRequest(request, secondaryHas404, ++attempt);
+    }
     /**
      * Decide whether to retry according to last HTTP response and retry counters.
      *
@@ -78235,15 +76958,15 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
      * @param response -
      * @param err -
      */
-    StorageRetryPolicy.prototype.shouldRetry = function (isPrimaryRetry, attempt, response, err) {
+    shouldRetry(isPrimaryRetry, attempt, response, err) {
         if (attempt >= this.retryOptions.maxTries) {
-            logger.info("RetryPolicy: Attempt(s) " + attempt + " >= maxTries " + this.retryOptions
-                .maxTries + ", no further try.");
+            logger.info(`RetryPolicy: Attempt(s) ${attempt} >= maxTries ${this.retryOptions
+                .maxTries}, no further try.`);
             return false;
         }
         // Handle network failures, you may need to customize the list when you implement
         // your own http client
-        var retriableErrors = [
+        const retriableErrors = [
             "ETIMEDOUT",
             "ESOCKETTIMEDOUT",
             "ECONNREFUSED",
@@ -78255,12 +76978,11 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
             "REQUEST_SEND_ERROR" // For default xhr based http client provided in ms-rest-js
         ];
         if (err) {
-            for (var _i = 0, retriableErrors_1 = retriableErrors; _i < retriableErrors_1.length; _i++) {
-                var retriableError = retriableErrors_1[_i];
+            for (const retriableError of retriableErrors) {
                 if (err.name.toUpperCase().includes(retriableError) ||
                     err.message.toUpperCase().includes(retriableError) ||
                     (err.code && err.code.toString().toUpperCase() === retriableError)) {
-                    logger.info("RetryPolicy: Network error " + retriableError + " found, will retry.");
+                    logger.info(`RetryPolicy: Network error ${retriableError} found, will retry.`);
                     return true;
                 }
             }
@@ -78269,23 +76991,23 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
         // the resource was not found. This may be due to replication delay. So, in this
         // case, we'll never try the secondary again for this operation.
         if (response || err) {
-            var statusCode = response ? response.status : err ? err.statusCode : 0;
+            const statusCode = response ? response.status : err ? err.statusCode : 0;
             if (!isPrimaryRetry && statusCode === 404) {
-                logger.info("RetryPolicy: Secondary access with 404, will retry.");
+                logger.info(`RetryPolicy: Secondary access with 404, will retry.`);
                 return true;
             }
             // Server internal error or server timeout
             if (statusCode === 503 || statusCode === 500) {
-                logger.info("RetryPolicy: Will retry for status code " + statusCode + ".");
+                logger.info(`RetryPolicy: Will retry for status code ${statusCode}.`);
                 return true;
             }
         }
-        if ((err === null || err === void 0 ? void 0 : err.code) === "PARSE_ERROR" && (err === null || err === void 0 ? void 0 : err.message.startsWith("Error \"Error: Unclosed root tag"))) {
+        if ((err === null || err === void 0 ? void 0 : err.code) === "PARSE_ERROR" && (err === null || err === void 0 ? void 0 : err.message.startsWith(`Error "Error: Unclosed root tag`))) {
             logger.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");
             return true;
         }
         return false;
-    };
+    }
     /**
      * Delay a calculated time between retries.
      *
@@ -78293,42 +77015,36 @@ var StorageRetryPolicy = /** @class */ (function (_super) {
      * @param attempt -
      * @param abortSignal -
      */
-    StorageRetryPolicy.prototype.delay = function (isPrimaryRetry, attempt, abortSignal) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var delayTimeInMs;
-            return tslib.__generator(this, function (_a) {
-                delayTimeInMs = 0;
-                if (isPrimaryRetry) {
-                    switch (this.retryOptions.retryPolicyType) {
-                        case exports.StorageRetryPolicyType.EXPONENTIAL:
-                            delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
-                            break;
-                        case exports.StorageRetryPolicyType.FIXED:
-                            delayTimeInMs = this.retryOptions.retryDelayInMs;
-                            break;
-                    }
-                }
-                else {
-                    delayTimeInMs = Math.random() * 1000;
-                }
-                logger.info("RetryPolicy: Delay for " + delayTimeInMs + "ms");
-                return [2 /*return*/, delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR)];
-            });
-        });
-    };
-    return StorageRetryPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async delay(isPrimaryRetry, attempt, abortSignal) {
+        let delayTimeInMs = 0;
+        if (isPrimaryRetry) {
+            switch (this.retryOptions.retryPolicyType) {
+                case exports.StorageRetryPolicyType.EXPONENTIAL:
+                    delayTimeInMs = Math.min((Math.pow(2, attempt - 1) - 1) * this.retryOptions.retryDelayInMs, this.retryOptions.maxRetryDelayInMs);
+                    break;
+                case exports.StorageRetryPolicyType.FIXED:
+                    delayTimeInMs = this.retryOptions.retryDelayInMs;
+                    break;
+            }
+        }
+        else {
+            delayTimeInMs = Math.random() * 1000;
+        }
+        logger.info(`RetryPolicy: Delay for ${delayTimeInMs}ms`);
+        return delay(delayTimeInMs, abortSignal, RETRY_ABORT_ERROR);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * StorageRetryPolicyFactory is a factory class helping generating {@link StorageRetryPolicy} objects.
  */
-var StorageRetryPolicyFactory = /** @class */ (function () {
+class StorageRetryPolicyFactory {
     /**
      * Creates an instance of StorageRetryPolicyFactory.
      * @param retryOptions -
      */
-    function StorageRetryPolicyFactory(retryOptions) {
+    constructor(retryOptions) {
         this.retryOptions = retryOptions;
     }
     /**
@@ -78337,61 +77053,53 @@ var StorageRetryPolicyFactory = /** @class */ (function () {
      * @param nextPolicy -
      * @param options -
      */
-    StorageRetryPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageRetryPolicy(nextPolicy, options, this.retryOptions);
-    };
-    return StorageRetryPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Credential policy used to sign HTTP(S) requests before sending. This is an
  * abstract class.
  */
-var CredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(CredentialPolicy, _super);
-    function CredentialPolicy() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
+class CredentialPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Sends out request.
      *
      * @param request -
      */
-    CredentialPolicy.prototype.sendRequest = function (request) {
+    sendRequest(request) {
         return this._nextPolicy.sendRequest(this.signRequest(request));
-    };
+    }
     /**
      * Child classes must implement this method with request signing. This method
      * will be executed in {@link sendRequest}.
      *
      * @param request -
      */
-    CredentialPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         // Child classes must override this method with request signing. This method
         // will be executed in sendRequest().
         return request;
-    };
-    return CredentialPolicy;
-}(coreHttp.BaseRequestPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * AnonymousCredentialPolicy is used with HTTP(S) requests that read public resources
  * or for use with Shared Access Signatures (SAS).
  */
-var AnonymousCredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(AnonymousCredentialPolicy, _super);
+class AnonymousCredentialPolicy extends CredentialPolicy {
     /**
      * Creates an instance of AnonymousCredentialPolicy.
      * @param nextPolicy -
      * @param options -
      */
-    function AnonymousCredentialPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
-    return AnonymousCredentialPolicy;
-}(CredentialPolicy));
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -78399,24 +77107,21 @@ var AnonymousCredentialPolicy = /** @class */ (function (_super) {
  * Credential is an abstract class for Azure Storage HTTP requests signing. This
  * class will host an credentialPolicyCreator factory which generates CredentialPolicy.
  */
-var Credential = /** @class */ (function () {
-    function Credential() {
-    }
+class Credential {
     /**
      * Creates a RequestPolicy object.
      *
      * @param _nextPolicy -
      * @param _options -
      */
-    Credential.prototype.create = function (
+    create(
     // tslint:disable-next-line:variable-name
     _nextPolicy, 
     // tslint:disable-next-line:variable-name
     _options) {
         throw new Error("Method should be implemented in children classes.");
-    };
-    return Credential;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -78425,88 +77130,76 @@ var Credential = /** @class */ (function () {
  * HTTP(S) requests that read public resources or for use with Shared Access
  * Signatures (SAS).
  */
-var AnonymousCredential = /** @class */ (function (_super) {
-    tslib.__extends(AnonymousCredential, _super);
-    function AnonymousCredential() {
-        return _super !== null && _super.apply(this, arguments) || this;
-    }
+class AnonymousCredential extends Credential {
     /**
      * Creates an {@link AnonymousCredentialPolicy} object.
      *
      * @param nextPolicy -
      * @param options -
      */
-    AnonymousCredential.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new AnonymousCredentialPolicy(nextPolicy, options);
-    };
-    return AnonymousCredential;
-}(Credential));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * TelemetryPolicy is a policy used to tag user-agent header for every requests.
  */
-var TelemetryPolicy = /** @class */ (function (_super) {
-    tslib.__extends(TelemetryPolicy, _super);
+class TelemetryPolicy extends coreHttp.BaseRequestPolicy {
     /**
      * Creates an instance of TelemetryPolicy.
      * @param nextPolicy -
      * @param options -
      * @param telemetry -
      */
-    function TelemetryPolicy(nextPolicy, options, telemetry) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.telemetry = telemetry;
-        return _this;
+    constructor(nextPolicy, options, telemetry) {
+        super(nextPolicy, options);
+        this.telemetry = telemetry;
     }
     /**
      * Sends out request.
      *
      * @param request -
      */
-    TelemetryPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                {
-                    if (!request.headers) {
-                        request.headers = new coreHttp.HttpHeaders();
-                    }
-                    if (!request.headers.get(HeaderConstants.USER_AGENT)) {
-                        request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);
-                    }
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return TelemetryPolicy;
-}(coreHttp.BaseRequestPolicy));
+    async sendRequest(request) {
+        {
+            if (!request.headers) {
+                request.headers = new coreHttp.HttpHeaders();
+            }
+            if (!request.headers.get(HeaderConstants.USER_AGENT)) {
+                request.headers.set(HeaderConstants.USER_AGENT, this.telemetry);
+            }
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * TelemetryPolicyFactory is a factory class helping generating {@link TelemetryPolicy} objects.
  */
-var TelemetryPolicyFactory = /** @class */ (function () {
+class TelemetryPolicyFactory {
     /**
      * Creates an instance of TelemetryPolicyFactory.
      * @param telemetry -
      */
-    function TelemetryPolicyFactory(telemetry) {
-        var userAgentInfo = [];
+    constructor(telemetry) {
+        const userAgentInfo = [];
         {
             if (telemetry) {
-                var telemetryString = telemetry.userAgentPrefix || "";
+                const telemetryString = telemetry.userAgentPrefix || "";
                 if (telemetryString.length > 0 && userAgentInfo.indexOf(telemetryString) === -1) {
                     userAgentInfo.push(telemetryString);
                 }
             }
             // e.g. azsdk-js-storageblob/10.0.0
-            var libInfo = "azsdk-js-storageblob/" + SDK_VERSION;
+            const libInfo = `azsdk-js-storageblob/${SDK_VERSION}`;
             if (userAgentInfo.indexOf(libInfo) === -1) {
                 userAgentInfo.push(libInfo);
             }
             // e.g. (NODE-VERSION 4.9.1; Windows_NT 10.0.16299)
-            var runtimeInfo = "(NODE-VERSION " + process.version + "; " + os.type() + " " + os.release() + ")";
+            const runtimeInfo = `(NODE-VERSION ${process.version}; ${os.type()} ${os.release()})`;
             if (userAgentInfo.indexOf(runtimeInfo) === -1) {
                 userAgentInfo.push(runtimeInfo);
             }
@@ -78519,14 +77212,13 @@ var TelemetryPolicyFactory = /** @class */ (function () {
      * @param nextPolicy -
      * @param options -
      */
-    TelemetryPolicyFactory.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new TelemetryPolicy(nextPolicy, options, this.telemetryString);
-    };
-    return TelemetryPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var _defaultHttpClient = new coreHttp.DefaultHttpClient();
+const _defaultHttpClient = new coreHttp.DefaultHttpClient();
 function getCachedDefaultHttpClient() {
     return _defaultHttpClient;
 }
@@ -78540,19 +77232,18 @@ function getCachedDefaultHttpClient() {
  * Refer to {@link newPipeline} and provided policies before implementing your
  * customized Pipeline.
  */
-var Pipeline = /** @class */ (function () {
+class Pipeline {
     /**
      * Creates an instance of Pipeline. Customize HTTPClient by implementing IHttpClient interface.
      *
      * @param factories -
      * @param options -
      */
-    function Pipeline(factories, options) {
-        if (options === void 0) { options = {}; }
+    constructor(factories, options = {}) {
         this.factories = factories;
         // when options.httpClient is not specified, passing in a DefaultHttpClient instance to
         // avoid each client creating its own http client.
-        this.options = tslib.__assign(tslib.__assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });
+        this.options = Object.assign(Object.assign({}, options), { httpClient: options.httpClient || getCachedDefaultHttpClient() });
     }
     /**
      * Transfer Pipeline object to ServiceClientOptions object which is required by
@@ -78560,14 +77251,13 @@ var Pipeline = /** @class */ (function () {
      *
      * @returns The ServiceClientOptions object from this Pipeline.
      */
-    Pipeline.prototype.toServiceClientOptions = function () {
+    toServiceClientOptions() {
         return {
             httpClient: this.options.httpClient,
             requestPolicyFactories: this.factories
         };
-    };
-    return Pipeline;
-}());
+    }
+}
 /**
  * Creates a new Pipeline object with Credential provided.
  *
@@ -78575,16 +77265,15 @@ var Pipeline = /** @class */ (function () {
  * @param pipelineOptions - Optional. Options.
  * @returns A new Pipeline object.
  */
-function newPipeline(credential, pipelineOptions) {
-    if (pipelineOptions === void 0) { pipelineOptions = {}; }
+function newPipeline(credential, pipelineOptions = {}) {
     if (credential === undefined) {
         credential = new AnonymousCredential();
     }
     // Order is important. Closer to the API at the top & closer to the network at the bottom.
     // The credential's policy factory must appear close to the wire so it can sign any
     // changes made by other factories (like UniqueRequestIDPolicyFactory)
-    var telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);
-    var factories = [
+    const telemetryPolicy = new TelemetryPolicyFactory(pipelineOptions.userAgentOptions);
+    const factories = [
         coreHttp.tracingPolicy({ userAgent: telemetryPolicy.telemetryString }),
         coreHttp.keepAlivePolicy(pipelineOptions.keepAliveOptions),
         telemetryPolicy,
@@ -78616,30 +77305,28 @@ function newPipeline(credential, pipelineOptions) {
 /**
  * StorageSharedKeyCredentialPolicy is a policy used to sign HTTP request with a shared key.
  */
-var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
-    tslib.__extends(StorageSharedKeyCredentialPolicy, _super);
+class StorageSharedKeyCredentialPolicy extends CredentialPolicy {
     /**
      * Creates an instance of StorageSharedKeyCredentialPolicy.
      * @param nextPolicy -
      * @param options -
      * @param factory -
      */
-    function StorageSharedKeyCredentialPolicy(nextPolicy, options, factory) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.factory = factory;
-        return _this;
+    constructor(nextPolicy, options, factory) {
+        super(nextPolicy, options);
+        this.factory = factory;
     }
     /**
      * Signs request.
      *
      * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.signRequest = function (request) {
+    signRequest(request) {
         request.headers.set(HeaderConstants.X_MS_DATE, new Date().toUTCString());
         if (request.body && typeof request.body === "string" && request.body.length > 0) {
             request.headers.set(HeaderConstants.CONTENT_LENGTH, Buffer.byteLength(request.body));
         }
-        var stringToSign = [
+        const stringToSign = [
             request.method.toUpperCase(),
             this.getHeaderValueToSign(request, HeaderConstants.CONTENT_LANGUAGE),
             this.getHeaderValueToSign(request, HeaderConstants.CONTENT_ENCODING),
@@ -78656,14 +77343,14 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
             "\n" +
             this.getCanonicalizedHeadersString(request) +
             this.getCanonicalizedResourceString(request);
-        var signature = this.factory.computeHMACSHA256(stringToSign);
-        request.headers.set(HeaderConstants.AUTHORIZATION, "SharedKey " + this.factory.accountName + ":" + signature);
+        const signature = this.factory.computeHMACSHA256(stringToSign);
+        request.headers.set(HeaderConstants.AUTHORIZATION, `SharedKey ${this.factory.accountName}:${signature}`);
         // console.log(`[URL]:${request.url}`);
         // console.log(`[HEADERS]:${request.headers.toString()}`);
         // console.log(`[STRING TO SIGN]:${JSON.stringify(stringToSign)}`);
         // console.log(`[KEY]: ${request.headers.get(HeaderConstants.AUTHORIZATION)}`);
         return request;
-    };
+    }
     /**
      * Retrieve header value according to shared key sign rules.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/authenticate-with-shared-key
@@ -78671,8 +77358,8 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
      * @param request -
      * @param headerName -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getHeaderValueToSign = function (request, headerName) {
-        var value = request.headers.get(headerName);
+    getHeaderValueToSign(request, headerName) {
+        const value = request.headers.get(headerName);
         if (!value) {
             return "";
         }
@@ -78683,7 +77370,7 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
             return "";
         }
         return value;
-    };
+    }
     /**
      * To construct the CanonicalizedHeaders portion of the signature string, follow these steps:
      * 1. Retrieve all headers for the resource that begin with x-ms-, including the x-ms-date header.
@@ -78697,58 +77384,56 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
      *
      * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedHeadersString = function (request) {
-        var headersArray = request.headers.headersArray().filter(function (value) {
+    getCanonicalizedHeadersString(request) {
+        let headersArray = request.headers.headersArray().filter((value) => {
             return value.name.toLowerCase().startsWith(HeaderConstants.PREFIX_FOR_STORAGE);
         });
-        headersArray.sort(function (a, b) {
+        headersArray.sort((a, b) => {
             return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
         });
         // Remove duplicate headers
-        headersArray = headersArray.filter(function (value, index, array) {
+        headersArray = headersArray.filter((value, index, array) => {
             if (index > 0 && value.name.toLowerCase() === array[index - 1].name.toLowerCase()) {
                 return false;
             }
             return true;
         });
-        var canonicalizedHeadersStringToSign = "";
-        headersArray.forEach(function (header) {
-            canonicalizedHeadersStringToSign += header.name
+        let canonicalizedHeadersStringToSign = "";
+        headersArray.forEach((header) => {
+            canonicalizedHeadersStringToSign += `${header.name
                 .toLowerCase()
-                .trimRight() + ":" + header.value.trimLeft() + "\n";
+                .trimRight()}:${header.value.trimLeft()}\n`;
         });
         return canonicalizedHeadersStringToSign;
-    };
+    }
     /**
      * Retrieves the webResource canonicalized resource string.
      *
      * @param request -
      */
-    StorageSharedKeyCredentialPolicy.prototype.getCanonicalizedResourceString = function (request) {
-        var path = getURLPath(request.url) || "/";
-        var canonicalizedResourceString = "";
-        canonicalizedResourceString += "/" + this.factory.accountName + path;
-        var queries = getURLQueries(request.url);
-        var lowercaseQueries = {};
+    getCanonicalizedResourceString(request) {
+        const path = getURLPath(request.url) || "/";
+        let canonicalizedResourceString = "";
+        canonicalizedResourceString += `/${this.factory.accountName}${path}`;
+        const queries = getURLQueries(request.url);
+        const lowercaseQueries = {};
         if (queries) {
-            var queryKeys = [];
-            for (var key in queries) {
+            const queryKeys = [];
+            for (const key in queries) {
                 if (queries.hasOwnProperty(key)) {
-                    var lowercaseKey = key.toLowerCase();
+                    const lowercaseKey = key.toLowerCase();
                     lowercaseQueries[lowercaseKey] = queries[key];
                     queryKeys.push(lowercaseKey);
                 }
             }
             queryKeys.sort();
-            for (var _i = 0, queryKeys_1 = queryKeys; _i < queryKeys_1.length; _i++) {
-                var key = queryKeys_1[_i];
-                canonicalizedResourceString += "\n" + key + ":" + decodeURIComponent(lowercaseQueries[key]);
+            for (const key of queryKeys) {
+                canonicalizedResourceString += `\n${key}:${decodeURIComponent(lowercaseQueries[key])}`;
             }
         }
         return canonicalizedResourceString;
-    };
-    return StorageSharedKeyCredentialPolicy;
-}(CredentialPolicy));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -78756,18 +77441,16 @@ var StorageSharedKeyCredentialPolicy = /** @class */ (function (_super) {
  *
  * StorageSharedKeyCredential for account key authorization of Azure Storage service.
  */
-var StorageSharedKeyCredential = /** @class */ (function (_super) {
-    tslib.__extends(StorageSharedKeyCredential, _super);
+class StorageSharedKeyCredential extends Credential {
     /**
      * Creates an instance of StorageSharedKeyCredential.
      * @param accountName -
      * @param accountKey -
      */
-    function StorageSharedKeyCredential(accountName, accountKey) {
-        var _this = _super.call(this) || this;
-        _this.accountName = accountName;
-        _this.accountKey = Buffer.from(accountKey, "base64");
-        return _this;
+    constructor(accountName, accountKey) {
+        super();
+        this.accountName = accountName;
+        this.accountKey = Buffer.from(accountKey, "base64");
     }
     /**
      * Creates a StorageSharedKeyCredentialPolicy object.
@@ -78775,21 +77458,20 @@ var StorageSharedKeyCredential = /** @class */ (function (_super) {
      * @param nextPolicy -
      * @param options -
      */
-    StorageSharedKeyCredential.prototype.create = function (nextPolicy, options) {
+    create(nextPolicy, options) {
         return new StorageSharedKeyCredentialPolicy(nextPolicy, options, this);
-    };
+    }
     /**
      * Generates a hash signature for an HTTP request or for a SAS.
      *
      * @param stringToSign -
      */
-    StorageSharedKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
+    computeHMACSHA256(stringToSign) {
         return crypto.createHmac("sha256", this.accountKey)
             .update(stringToSign, "utf8")
             .digest("base64");
-    };
-    return StorageSharedKeyCredential;
-}(Credential));
+    }
+}
 
 /*
  * Copyright (c) Microsoft Corporation.
@@ -78798,18 +77480,16 @@ var StorageSharedKeyCredential = /** @class */ (function (_super) {
  * Code generated by Microsoft (R) AutoRest Code Generator.
  * Changes may cause incorrect behavior and will be lost if the code is regenerated.
  */
-var packageName = "azure-storage-blob";
-var packageVersion = "12.6.0-beta.1";
-var StorageClientContext = /** @class */ (function (_super) {
-    tslib.__extends(StorageClientContext, _super);
+const packageName = "azure-storage-blob";
+const packageVersion = "12.6.0-beta.1";
+class StorageClientContext extends coreHttp.ServiceClient {
     /**
      * Initializes a new instance of the StorageClientContext class.
      * @param url The URL of the service account, container, or blob that is the targe of the desired
      *            operation.
      * @param options The parameter options
      */
-    function StorageClientContext(url, options) {
-        var _this = this;
+    constructor(url, options) {
         if (url === undefined) {
             throw new Error("'url' cannot be null");
         }
@@ -78818,33 +77498,31 @@ var StorageClientContext = /** @class */ (function (_super) {
             options = {};
         }
         if (!options.userAgent) {
-            var defaultUserAgent = coreHttp.getDefaultUserAgentValue();
-            options.userAgent = packageName + "/" + packageVersion + " " + defaultUserAgent;
+            const defaultUserAgent = coreHttp.getDefaultUserAgentValue();
+            options.userAgent = `${packageName}/${packageVersion} ${defaultUserAgent}`;
         }
-        _this = _super.call(this, undefined, options) || this;
-        _this.requestContentType = "application/json; charset=utf-8";
-        _this.baseUri = options.endpoint || "{url}";
+        super(undefined, options);
+        this.requestContentType = "application/json; charset=utf-8";
+        this.baseUri = options.endpoint || "{url}";
         // Parameter assignments
-        _this.url = url;
+        this.url = url;
         // Assigning values to Constant parameters
-        _this.version = options.version || "2020-08-04";
-        return _this;
+        this.version = options.version || "2020-08-04";
     }
-    return StorageClientContext;
-}(coreHttp.ServiceClient));
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * A StorageClient represents a based URL class for {@link BlobServiceClient}, {@link ContainerClient}
  * and etc.
  */
-var StorageClient = /** @class */ (function () {
+class StorageClient {
     /**
      * Creates an instance of StorageClient.
      * @param url - url to resource
      * @param pipeline - request policy pipeline.
      */
-    function StorageClient(url, pipeline) {
+    constructor(url, pipeline) {
         // URL should be encoded and only once, protocol layer shouldn't encode URL again
         this.url = escapeURLPath(url);
         this.accountName = getAccountNameFromUrl(url);
@@ -78852,8 +77530,7 @@ var StorageClient = /** @class */ (function () {
         this.storageClientContext = new StorageClientContext(this.url, pipeline.toServiceClientOptions());
         this.isHttps = iEqual(getURLScheme(this.url) || "", "https");
         this.credential = new AnonymousCredential();
-        for (var _i = 0, _a = this.pipeline.factories; _i < _a.length; _i++) {
-            var factory = _a[_i];
+        for (const factory of this.pipeline.factories) {
             if ((coreHttp.isNode && factory instanceof StorageSharedKeyCredential) ||
                 factory instanceof AnonymousCredential) {
                 this.credential = factory;
@@ -78865,18 +77542,17 @@ var StorageClient = /** @class */ (function () {
             }
         }
         // Override protocol layer's default content-type
-        var storageClientContext = this.storageClientContext;
+        const storageClientContext = this.storageClientContext;
         storageClientContext.requestContentType = undefined;
     }
-    return StorageClient;
-}());
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * Creates a span using the global tracer.
  * @internal
  */
-var createSpan = coreTracing.createSpanFunction({
+const createSpan = coreTracing.createSpanFunction({
     packagePrefix: "Azure.Storage.Blob",
     namespace: "Microsoft.Storage"
 });
@@ -78906,8 +77582,8 @@ function convertTracingToRequestOptionsBase(options) {
  * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
  * the order of the permissions is particular and this class guarantees correctness.
  */
-var BlobSASPermissions = /** @class */ (function () {
-    function BlobSASPermissions() {
+class BlobSASPermissions {
+    constructor() {
         /**
          * Specifies Read access granted.
          */
@@ -78951,10 +77627,9 @@ var BlobSASPermissions = /** @class */ (function () {
      *
      * @param permissions -
      */
-    BlobSASPermissions.parse = function (permissions) {
-        var blobSASPermissions = new BlobSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var char = permissions_1[_i];
+    static parse(permissions) {
+        const blobSASPermissions = new BlobSASPermissions();
+        for (const char of permissions) {
             switch (char) {
                 case "r":
                     blobSASPermissions.read = true;
@@ -78984,19 +77659,19 @@ var BlobSASPermissions = /** @class */ (function () {
                     blobSASPermissions.execute = true;
                     break;
                 default:
-                    throw new RangeError("Invalid permission: " + char);
+                    throw new RangeError(`Invalid permission: ${char}`);
             }
         }
         return blobSASPermissions;
-    };
+    }
     /**
      * Creates a {@link BlobSASPermissions} from a raw object which contains same keys as it
      * and boolean values for them.
      *
      * @param permissionLike -
      */
-    BlobSASPermissions.from = function (permissionLike) {
-        var blobSASPermissions = new BlobSASPermissions();
+    static from(permissionLike) {
+        const blobSASPermissions = new BlobSASPermissions();
         if (permissionLike.read) {
             blobSASPermissions.read = true;
         }
@@ -79025,15 +77700,15 @@ var BlobSASPermissions = /** @class */ (function () {
             blobSASPermissions.execute = true;
         }
         return blobSASPermissions;
-    };
+    }
     /**
      * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
      * order accepted by the service.
      *
      * @returns A string which represents the BlobSASPermissions
      */
-    BlobSASPermissions.prototype.toString = function () {
-        var permissions = [];
+    toString() {
+        const permissions = [];
         if (this.read) {
             permissions.push("r");
         }
@@ -79062,9 +77737,8 @@ var BlobSASPermissions = /** @class */ (function () {
             permissions.push("e");
         }
         return permissions.join("");
-    };
-    return BlobSASPermissions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -79075,8 +77749,8 @@ var BlobSASPermissions = /** @class */ (function () {
  * {@link BlobSASSignatureValues} object. It is possible to construct the permissions string without this class, but
  * the order of the permissions is particular and this class guarantees correctness.
  */
-var ContainerSASPermissions = /** @class */ (function () {
-    function ContainerSASPermissions() {
+class ContainerSASPermissions {
+    constructor() {
         /**
          * Specifies Read access granted.
          */
@@ -79124,10 +77798,9 @@ var ContainerSASPermissions = /** @class */ (function () {
      *
      * @param permissions -
      */
-    ContainerSASPermissions.parse = function (permissions) {
-        var containerSASPermissions = new ContainerSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var char = permissions_1[_i];
+    static parse(permissions) {
+        const containerSASPermissions = new ContainerSASPermissions();
+        for (const char of permissions) {
             switch (char) {
                 case "r":
                     containerSASPermissions.read = true;
@@ -79160,19 +77833,19 @@ var ContainerSASPermissions = /** @class */ (function () {
                     containerSASPermissions.execute = true;
                     break;
                 default:
-                    throw new RangeError("Invalid permission " + char);
+                    throw new RangeError(`Invalid permission ${char}`);
             }
         }
         return containerSASPermissions;
-    };
+    }
     /**
      * Creates a {@link ContainerSASPermissions} from a raw object which contains same keys as it
      * and boolean values for them.
      *
      * @param permissionLike -
      */
-    ContainerSASPermissions.from = function (permissionLike) {
-        var containerSASPermissions = new ContainerSASPermissions();
+    static from(permissionLike) {
+        const containerSASPermissions = new ContainerSASPermissions();
         if (permissionLike.read) {
             containerSASPermissions.read = true;
         }
@@ -79204,7 +77877,7 @@ var ContainerSASPermissions = /** @class */ (function () {
             containerSASPermissions.execute = true;
         }
         return containerSASPermissions;
-    };
+    }
     /**
      * Converts the given permissions to a string. Using this method will guarantee the permissions are in an
      * order accepted by the service.
@@ -79213,8 +77886,8 @@ var ContainerSASPermissions = /** @class */ (function () {
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-a-service-sas
      *
      */
-    ContainerSASPermissions.prototype.toString = function () {
-        var permissions = [];
+    toString() {
+        const permissions = [];
         if (this.read) {
             permissions.push("r");
         }
@@ -79246,9 +77919,8 @@ var ContainerSASPermissions = /** @class */ (function () {
             permissions.push("e");
         }
         return permissions.join("");
-    };
-    return ContainerSASPermissions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -79257,13 +77929,13 @@ var ContainerSASPermissions = /** @class */ (function () {
  * UserDelegationKeyCredential is only used for generation of user delegation SAS.
  * @see https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas
  */
-var UserDelegationKeyCredential = /** @class */ (function () {
+class UserDelegationKeyCredential {
     /**
      * Creates an instance of UserDelegationKeyCredential.
      * @param accountName -
      * @param userDelegationKey -
      */
-    function UserDelegationKeyCredential(accountName, userDelegationKey) {
+    constructor(accountName, userDelegationKey) {
         this.accountName = accountName;
         this.userDelegationKey = userDelegationKey;
         this.key = Buffer.from(userDelegationKey.value, "base64");
@@ -79273,14 +77945,13 @@ var UserDelegationKeyCredential = /** @class */ (function () {
      *
      * @param stringToSign -
      */
-    UserDelegationKeyCredential.prototype.computeHMACSHA256 = function (stringToSign) {
+    computeHMACSHA256(stringToSign) {
         // console.log(`stringToSign: ${JSON.stringify(stringToSign)}`);
         return crypto.createHmac("sha256", this.key)
             .update(stringToSign, "utf8")
             .digest("base64");
-    };
-    return UserDelegationKeyCredential;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -79292,7 +77963,7 @@ var UserDelegationKeyCredential = /** @class */ (function () {
  * @param ipRange -
  */
 function ipRangeToString(ipRange) {
-    return ipRange.end ? ipRange.start + "-" + ipRange.end : ipRange.start;
+    return ipRange.end ? `${ipRange.start}-${ipRange.end}` : ipRange.start;
 }
 
 // Copyright (c) Microsoft Corporation.
@@ -79315,8 +77986,8 @@ function ipRangeToString(ipRange) {
  *
  * NOTE: Instances of this class are immutable.
  */
-var SASQueryParameters = /** @class */ (function () {
-    function SASQueryParameters(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId) {
+class SASQueryParameters {
+    constructor(version, signature, permissionsOrOptions, services, resourceTypes, protocol, startsOn, expiresOn, ipRange, identifier, resource, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, userDelegationKey, preauthorizedAgentObjectId, correlationId) {
         this.version = version;
         this.signature = signature;
         if (permissionsOrOptions !== undefined && typeof permissionsOrOptions !== "string") {
@@ -79373,30 +78044,26 @@ var SASQueryParameters = /** @class */ (function () {
             }
         }
     }
-    Object.defineProperty(SASQueryParameters.prototype, "ipRange", {
-        /**
-         * Optional. IP range allowed for this SAS.
-         *
-         * @readonly
-         */
-        get: function () {
-            if (this.ipRangeInner) {
-                return {
-                    end: this.ipRangeInner.end,
-                    start: this.ipRangeInner.start
-                };
-            }
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * Optional. IP range allowed for this SAS.
+     *
+     * @readonly
+     */
+    get ipRange() {
+        if (this.ipRangeInner) {
+            return {
+                end: this.ipRangeInner.end,
+                start: this.ipRangeInner.start
+            };
+        }
+        return undefined;
+    }
     /**
      * Encodes all SAS query parameters into a string that can be appended to a URL.
      *
      */
-    SASQueryParameters.prototype.toString = function () {
-        var params = [
+    toString() {
+        const params = [
             "sv",
             "ss",
             "srt",
@@ -79422,9 +78089,8 @@ var SASQueryParameters = /** @class */ (function () {
             "saoid",
             "scid"
         ];
-        var queries = [];
-        for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {
-            var param = params_1[_i];
+        const queries = [];
+        for (const param of params) {
             switch (param) {
                 case "sv":
                     this.tryAppendQueryParameter(queries, param, this.version);
@@ -79501,7 +78167,7 @@ var SASQueryParameters = /** @class */ (function () {
             }
         }
         return queries.join("&");
-    };
+    }
     /**
      * A private helper method used to filter and append query key/value pairs into an array.
      *
@@ -79509,26 +78175,25 @@ var SASQueryParameters = /** @class */ (function () {
      * @param key -
      * @param value -
      */
-    SASQueryParameters.prototype.tryAppendQueryParameter = function (queries, key, value) {
+    tryAppendQueryParameter(queries, key, value) {
         if (!value) {
             return;
         }
         key = encodeURIComponent(key);
         value = encodeURIComponent(value);
         if (key.length > 0 && value.length > 0) {
-            queries.push(key + "=" + value);
+            queries.push(`${key}=${value}`);
         }
-    };
-    return SASQueryParameters;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 function generateBlobSASQueryParameters(blobSASSignatureValues, sharedKeyCredentialOrUserDelegationKey, accountName) {
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
-    var sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
+    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
+    const sharedKeyCredential = sharedKeyCredentialOrUserDelegationKey instanceof StorageSharedKeyCredential
         ? sharedKeyCredentialOrUserDelegationKey
         : undefined;
-    var userDelegationKeyCredential;
+    let userDelegationKeyCredential;
     if (sharedKeyCredential === undefined && accountName !== undefined) {
         userDelegationKeyCredential = new UserDelegationKeyCredential(accountName, sharedKeyCredentialOrUserDelegationKey);
     }
@@ -79584,12 +78249,12 @@ function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKe
         !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
         throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
     }
-    var resource = "c";
+    let resource = "c";
     if (blobSASSignatureValues.blobName) {
         resource = "b";
     }
     // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    var verifiedPermissions;
+    let verifiedPermissions;
     if (blobSASSignatureValues.permissions) {
         if (blobSASSignatureValues.blobName) {
             verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
@@ -79599,7 +78264,7 @@ function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKe
         }
     }
     // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
+    const stringToSign = [
         verifiedPermissions ? verifiedPermissions : "",
         blobSASSignatureValues.startsOn
             ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
@@ -79618,7 +78283,7 @@ function generateBlobSASQueryParameters20150405(blobSASSignatureValues, sharedKe
         blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
         blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
     ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
 }
 /**
@@ -79643,8 +78308,8 @@ function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKe
         !(blobSASSignatureValues.permissions && blobSASSignatureValues.expiresOn)) {
         throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.");
     }
-    var resource = "c";
-    var timestamp = blobSASSignatureValues.snapshotTime;
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
     if (blobSASSignatureValues.blobName) {
         resource = "b";
         if (blobSASSignatureValues.snapshotTime) {
@@ -79656,7 +78321,7 @@ function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKe
         }
     }
     // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    var verifiedPermissions;
+    let verifiedPermissions;
     if (blobSASSignatureValues.permissions) {
         if (blobSASSignatureValues.blobName) {
             verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
@@ -79666,7 +78331,7 @@ function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKe
         }
     }
     // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
+    const stringToSign = [
         verifiedPermissions ? verifiedPermissions : "",
         blobSASSignatureValues.startsOn
             ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
@@ -79687,7 +78352,7 @@ function generateBlobSASQueryParameters20181109(blobSASSignatureValues, sharedKe
         blobSASSignatureValues.contentLanguage ? blobSASSignatureValues.contentLanguage : "",
         blobSASSignatureValues.contentType ? blobSASSignatureValues.contentType : ""
     ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType);
 }
 /**
@@ -79710,8 +78375,8 @@ function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userD
     if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
         throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
     }
-    var resource = "c";
-    var timestamp = blobSASSignatureValues.snapshotTime;
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
     if (blobSASSignatureValues.blobName) {
         resource = "b";
         if (blobSASSignatureValues.snapshotTime) {
@@ -79723,7 +78388,7 @@ function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userD
         }
     }
     // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    var verifiedPermissions;
+    let verifiedPermissions;
     if (blobSASSignatureValues.permissions) {
         if (blobSASSignatureValues.blobName) {
             verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
@@ -79733,7 +78398,7 @@ function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userD
         }
     }
     // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
+    const stringToSign = [
         verifiedPermissions ? verifiedPermissions : "",
         blobSASSignatureValues.startsOn
             ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
@@ -79763,7 +78428,7 @@ function generateBlobSASQueryParametersUDK20181109(blobSASSignatureValues, userD
         blobSASSignatureValues.contentLanguage,
         blobSASSignatureValues.contentType
     ].join("\n");
-    var signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey);
 }
 /**
@@ -79786,8 +78451,8 @@ function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userD
     if (!blobSASSignatureValues.permissions || !blobSASSignatureValues.expiresOn) {
         throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.");
     }
-    var resource = "c";
-    var timestamp = blobSASSignatureValues.snapshotTime;
+    let resource = "c";
+    let timestamp = blobSASSignatureValues.snapshotTime;
     if (blobSASSignatureValues.blobName) {
         resource = "b";
         if (blobSASSignatureValues.snapshotTime) {
@@ -79799,7 +78464,7 @@ function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userD
         }
     }
     // Calling parse and toString guarantees the proper ordering and throws on invalid characters.
-    var verifiedPermissions;
+    let verifiedPermissions;
     if (blobSASSignatureValues.permissions) {
         if (blobSASSignatureValues.blobName) {
             verifiedPermissions = BlobSASPermissions.parse(blobSASSignatureValues.permissions.toString()).toString();
@@ -79809,7 +78474,7 @@ function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userD
         }
     }
     // Signature is generated on the un-url-encoded values.
-    var stringToSign = [
+    const stringToSign = [
         verifiedPermissions ? verifiedPermissions : "",
         blobSASSignatureValues.startsOn
             ? truncatedISO8061Date(blobSASSignatureValues.startsOn, false)
@@ -79842,20 +78507,20 @@ function generateBlobSASQueryParametersUDK20200210(blobSASSignatureValues, userD
         blobSASSignatureValues.contentLanguage,
         blobSASSignatureValues.contentType
     ].join("\n");
-    var signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = userDelegationKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(blobSASSignatureValues.version, signature, verifiedPermissions, undefined, undefined, blobSASSignatureValues.protocol, blobSASSignatureValues.startsOn, blobSASSignatureValues.expiresOn, blobSASSignatureValues.ipRange, blobSASSignatureValues.identifier, resource, blobSASSignatureValues.cacheControl, blobSASSignatureValues.contentDisposition, blobSASSignatureValues.contentEncoding, blobSASSignatureValues.contentLanguage, blobSASSignatureValues.contentType, userDelegationKeyCredential.userDelegationKey, blobSASSignatureValues.preauthorizedAgentObjectId, blobSASSignatureValues.correlationId);
 }
 function getCanonicalName(accountName, containerName, blobName) {
     // Container: "/blob/account/containerName"
     // Blob:      "/blob/account/containerName/blobName"
-    var elements = ["/blob/" + accountName + "/" + containerName];
+    const elements = [`/blob/${accountName}/${containerName}`];
     if (blobName) {
-        elements.push("/" + blobName);
+        elements.push(`/${blobName}`);
     }
     return elements.join("");
 }
 function SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {
-    var version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
+    const version = blobSASSignatureValues.version ? blobSASSignatureValues.version : SERVICE_VERSION;
     if (blobSASSignatureValues.snapshotTime && version < "2018-11-09") {
         throw RangeError("'version' must be >= '2018-11-09' when providing 'snapshotTime'.");
     }
@@ -79891,17 +78556,18 @@ function SASSignatureValuesSanityCheckAndAutofill(blobSASSignatureValues) {
     return blobSASSignatureValues;
 }
 
+// Copyright (c) Microsoft Corporation.
 /**
  * A client that manages leases for a {@link ContainerClient} or a {@link BlobClient}.
  */
-var BlobLeaseClient = /** @class */ (function () {
+class BlobLeaseClient {
     /**
      * Creates an instance of BlobLeaseClient.
      * @param client - The client to make the lease operation requests.
      * @param leaseId - Initial proposed lease id.
      */
-    function BlobLeaseClient(client, leaseId) {
-        var clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());
+    constructor(client, leaseId) {
+        const clientContext = new StorageClientContext(client.url, client.pipeline.toServiceClientOptions());
         this._url = client.url;
         if (client.name === undefined) {
             this._isContainer = true;
@@ -79916,30 +78582,22 @@ var BlobLeaseClient = /** @class */ (function () {
         }
         this._leaseId = leaseId;
     }
-    Object.defineProperty(BlobLeaseClient.prototype, "leaseId", {
-        /**
-         * Gets the lease Id.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this._leaseId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobLeaseClient.prototype, "url", {
-        /**
-         * Gets the url.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this._url;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * Gets the lease Id.
+     *
+     * @readonly
+     */
+    get leaseId() {
+        return this._leaseId;
+    }
+    /**
+     * Gets the url.
+     *
+     * @readonly
+     */
+    get url() {
+        return this._url;
+    }
     /**
      * Establishes and manages a lock on a container for delete operations, or on a blob
      * for write and delete operations.
@@ -79952,41 +78610,29 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - option to configure lease management operations.
      * @returns Response data for acquire lease operation.
      */
-    BlobLeaseClient.prototype.acquireLease = function (duration, options) {
+    async acquireLease(duration, options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, e_1;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-acquireLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.acquireLease(tslib.__assign({ abortSignal: options.abortSignal, duration: duration, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }), proposedLeaseId: this._leaseId }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_1 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-acquireLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.acquireLease(Object.assign({ abortSignal: options.abortSignal, duration, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }), proposedLeaseId: this._leaseId }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * To change the ID of the lease.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
@@ -79997,44 +78643,31 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - option to configure lease management operations.
      * @returns Response data for change lease operation.
      */
-    BlobLeaseClient.prototype.changeLease = function (proposedLeaseId, options) {
+    async changeLease(proposedLeaseId, options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, response, e_2;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-changeLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _h.sent();
-                        this._leaseId = proposedLeaseId;
-                        return [2 /*return*/, response];
-                    case 3:
-                        e_2 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-changeLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            const response = await this._containerOrBlobOperation.changeLease(this._leaseId, proposedLeaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            this._leaseId = proposedLeaseId;
+            return response;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * To free the lease if it is no longer needed so that another client may
      * immediately acquire a lease against the container or the blob.
@@ -80045,41 +78678,29 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - option to configure lease management operations.
      * @returns Response data for release lease operation.
      */
-    BlobLeaseClient.prototype.releaseLease = function (options) {
+    async releaseLease(options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, e_3;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-releaseLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.releaseLease(this._leaseId, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_3 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-releaseLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.releaseLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * To renew the lease.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/lease-container
@@ -80089,41 +78710,29 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - Optional option to configure lease management operations.
      * @returns Response data for renew lease operation.
      */
-    BlobLeaseClient.prototype.renewLease = function (options) {
+    async renewLease(options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, e_4;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-renewLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._containerOrBlobOperation.renewLease(this._leaseId, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_4 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-renewLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            return await this._containerOrBlobOperation.renewLease(this._leaseId, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * To end the lease but ensure that another client cannot acquire a new lease
      * until the current lease period has expired.
@@ -80135,44 +78744,31 @@ var BlobLeaseClient = /** @class */ (function () {
      * @param options - Optional options to configure lease management operations.
      * @returns Response data for break lease operation.
      */
-    BlobLeaseClient.prototype.breakLease = function (breakPeriod, options) {
+    async breakLease(breakPeriod, options = {}) {
         var _a, _b, _c, _d, _e, _f;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _g, span, updatedOptions, operationOptions, e_5;
-            return tslib.__generator(this, function (_h) {
-                switch (_h.label) {
-                    case 0:
-                        _g = createSpan("BlobLeaseClient-breakLease", options), span = _g.span, updatedOptions = _g.updatedOptions;
-                        if (this._isContainer &&
-                            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
-                                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
-                                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
-                            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
-                        }
-                        _h.label = 1;
-                    case 1:
-                        _h.trys.push([1, 3, 4, 5]);
-                        operationOptions = tslib.__assign({ abortSignal: options.abortSignal, breakPeriod: breakPeriod, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions));
-                        return [4 /*yield*/, this._containerOrBlobOperation.breakLease(operationOptions)];
-                    case 2: return [2 /*return*/, _h.sent()];
-                    case 3:
-                        e_5 = _h.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobLeaseClient-breakLease", options);
+        if (this._isContainer &&
+            ((((_a = options.conditions) === null || _a === void 0 ? void 0 : _a.ifMatch) && ((_b = options.conditions) === null || _b === void 0 ? void 0 : _b.ifMatch) !== ETagNone) ||
+                (((_c = options.conditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch) && ((_d = options.conditions) === null || _d === void 0 ? void 0 : _d.ifNoneMatch) !== ETagNone) ||
+                ((_e = options.conditions) === null || _e === void 0 ? void 0 : _e.tagConditions))) {
+            throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.");
+        }
+        try {
+            const operationOptions = Object.assign({ abortSignal: options.abortSignal, breakPeriod, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_f = options.conditions) === null || _f === void 0 ? void 0 : _f.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions));
+            return await this._containerOrBlobOperation.breakLease(operationOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlobLeaseClient;
-}());
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -80180,8 +78776,7 @@ var BlobLeaseClient = /** @class */ (function () {
  *
  * A Node.js ReadableStream will internally retry when internal ReadableStream unexpected ends.
  */
-var RetriableReadableStream = /** @class */ (function (_super) {
-    tslib.__extends(RetriableReadableStream, _super);
+class RetriableReadableStream extends stream.Readable {
     /**
      * Creates an instance of RetriableReadableStream.
      *
@@ -80192,32 +78787,31 @@ var RetriableReadableStream = /** @class */ (function (_super) {
      * @param count - How much data in original data source to read
      * @param options -
      */
-    function RetriableReadableStream(source, getter, offset, count, options) {
-        if (options === void 0) { options = {}; }
-        var _this = _super.call(this, { highWaterMark: options.highWaterMark }) || this;
-        _this.retries = 0;
-        _this.sourceDataHandler = function (data) {
-            if (_this.options.doInjectErrorOnce) {
-                _this.options.doInjectErrorOnce = undefined;
-                _this.source.pause();
-                _this.source.removeAllListeners("data");
-                _this.source.emit("end");
+    constructor(source, getter, offset, count, options = {}) {
+        super({ highWaterMark: options.highWaterMark });
+        this.retries = 0;
+        this.sourceDataHandler = (data) => {
+            if (this.options.doInjectErrorOnce) {
+                this.options.doInjectErrorOnce = undefined;
+                this.source.pause();
+                this.source.removeAllListeners("data");
+                this.source.emit("end");
                 return;
             }
             // console.log(
             //   `Offset: ${this.offset}, Received ${data.length} from internal stream`
             // );
-            _this.offset += data.length;
-            if (_this.onProgress) {
-                _this.onProgress({ loadedBytes: _this.offset - _this.start });
+            this.offset += data.length;
+            if (this.onProgress) {
+                this.onProgress({ loadedBytes: this.offset - this.start });
             }
-            if (!_this.push(data)) {
-                _this.source.pause();
+            if (!this.push(data)) {
+                this.source.pause();
             }
         };
-        _this.sourceErrorOrEndHandler = function (err) {
+        this.sourceErrorOrEndHandler = (err) => {
             if (err && err.name === "AbortError") {
-                _this.destroy(err);
+                this.destroy(err);
                 return;
             }
             // console.log(
@@ -80225,69 +78819,67 @@ var RetriableReadableStream = /** @class */ (function (_super) {
             //     this.offset
             //   }, dest end : ${this.end}`
             // );
-            _this.removeSourceEventHandlers();
-            if (_this.offset - 1 === _this.end) {
-                _this.push(null);
+            this.removeSourceEventHandlers();
+            if (this.offset - 1 === this.end) {
+                this.push(null);
             }
-            else if (_this.offset <= _this.end) {
+            else if (this.offset <= this.end) {
                 // console.log(
                 //   `retries: ${this.retries}, max retries: ${this.maxRetries}`
                 // );
-                if (_this.retries < _this.maxRetryRequests) {
-                    _this.retries += 1;
-                    _this.getter(_this.offset)
-                        .then(function (newSource) {
-                        _this.source = newSource;
-                        _this.setSourceEventHandlers();
+                if (this.retries < this.maxRetryRequests) {
+                    this.retries += 1;
+                    this.getter(this.offset)
+                        .then((newSource) => {
+                        this.source = newSource;
+                        this.setSourceEventHandlers();
                     })
-                        .catch(function (error) {
-                        _this.destroy(error);
+                        .catch((error) => {
+                        this.destroy(error);
                     });
                 }
                 else {
-                    _this.destroy(new Error(
+                    this.destroy(new Error(
                     // tslint:disable-next-line:max-line-length
-                    "Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: " + (_this
-                        .offset - 1) + ", data needed offset: " + _this.end + ", retries: " + _this.retries + ", max retries: " + _this.maxRetryRequests));
+                    `Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: ${this
+                        .offset - 1}, data needed offset: ${this.end}, retries: ${this.retries}, max retries: ${this.maxRetryRequests}`));
                 }
             }
             else {
-                _this.destroy(new Error("Data corruption failure: Received more data than original request, data needed offset is " + _this.end + ", received offset: " + (_this.offset - 1)));
+                this.destroy(new Error(`Data corruption failure: Received more data than original request, data needed offset is ${this.end}, received offset: ${this.offset - 1}`));
             }
         };
-        _this.getter = getter;
-        _this.source = source;
-        _this.start = offset;
-        _this.offset = offset;
-        _this.end = offset + count - 1;
-        _this.maxRetryRequests =
+        this.getter = getter;
+        this.source = source;
+        this.start = offset;
+        this.offset = offset;
+        this.end = offset + count - 1;
+        this.maxRetryRequests =
             options.maxRetryRequests && options.maxRetryRequests >= 0 ? options.maxRetryRequests : 0;
-        _this.onProgress = options.onProgress;
-        _this.options = options;
-        _this.setSourceEventHandlers();
-        return _this;
+        this.onProgress = options.onProgress;
+        this.options = options;
+        this.setSourceEventHandlers();
     }
-    RetriableReadableStream.prototype._read = function () {
+    _read() {
         this.source.resume();
-    };
-    RetriableReadableStream.prototype.setSourceEventHandlers = function () {
+    }
+    setSourceEventHandlers() {
         this.source.on("data", this.sourceDataHandler);
         this.source.on("end", this.sourceErrorOrEndHandler);
         this.source.on("error", this.sourceErrorOrEndHandler);
-    };
-    RetriableReadableStream.prototype.removeSourceEventHandlers = function () {
+    }
+    removeSourceEventHandlers() {
         this.source.removeListener("data", this.sourceDataHandler);
         this.source.removeListener("end", this.sourceErrorOrEndHandler);
         this.source.removeListener("error", this.sourceErrorOrEndHandler);
-    };
-    RetriableReadableStream.prototype._destroy = function (error, callback) {
+    }
+    _destroy(error, callback) {
         // remove listener from source and release source
         this.removeSourceEventHandlers();
         this.source.destroy();
         callback(error === null ? undefined : error);
-    };
-    return RetriableReadableStream;
-}(stream.Readable));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -80300,7 +78892,7 @@ var RetriableReadableStream = /** @class */ (function (_super) {
  * The {@link readableStreamBody} stream will retry underlayer, you can just use it as a normal Node.js
  * Readable stream.
  */
-var BlobDownloadResponse = /** @class */ (function () {
+class BlobDownloadResponse {
     /**
      * Creates an instance of BlobDownloadResponse.
      *
@@ -80310,593 +78902,419 @@ var BlobDownloadResponse = /** @class */ (function () {
      * @param count -
      * @param options -
      */
-    function BlobDownloadResponse(originalResponse, getter, offset, count, options) {
-        if (options === void 0) { options = {}; }
+    constructor(originalResponse, getter, offset, count, options = {}) {
         this.originalResponse = originalResponse;
         this.blobDownloadStream = new RetriableReadableStream(this.originalResponse.readableStreamBody, getter, offset, count, options);
     }
-    Object.defineProperty(BlobDownloadResponse.prototype, "acceptRanges", {
-        /**
-         * Indicates that the service supports
-         * requests for partial file content.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.acceptRanges;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "cacheControl", {
-        /**
-         * Returns if it was previously specified
-         * for the file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.cacheControl;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentDisposition", {
-        /**
-         * Returns the value that was specified
-         * for the 'x-ms-content-disposition' header and specifies how to process the
-         * response.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentDisposition;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentEncoding", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Encoding request header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentEncoding;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentLanguage", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Language request header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentLanguage;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobSequenceNumber", {
-        /**
-         * The current sequence number for a
-         * page blob. This header is not returned for block blobs or append blobs.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobSequenceNumber;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobType", {
-        /**
-         * The blob's type. Possible values include:
-         * 'BlockBlob', 'PageBlob', 'AppendBlob'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentLength", {
-        /**
-         * The number of bytes present in the
-         * response body.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentLength;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentMD5", {
-        /**
-         * If the file has an MD5 hash and the
-         * request is to read the full file, this response header is returned so that
-         * the client can check for message content integrity. If the request is to
-         * read a specified range and the 'x-ms-range-get-content-md5' is set to
-         * true, then the request returns an MD5 hash for the range, as long as the
-         * range size is less than or equal to 4 MB. If neither of these sets of
-         * conditions is true, then no value is returned for the 'Content-MD5'
-         * header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentRange", {
-        /**
-         * Indicates the range of bytes returned if
-         * the client requested a subset of the file by setting the Range request
-         * header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentRange;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentType", {
-        /**
-         * The content type specified for the file.
-         * The default content type is 'application/octet-stream'
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyCompletedOn", {
-        /**
-         * Conclusion time of the last attempted
-         * Copy File operation where this file was the destination file. This value
-         * can specify the time of a completed, aborted, or failed copy attempt.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyCompletedOn;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyId", {
-        /**
-         * String identifier for the last attempted Copy
-         * File operation where this file was the destination file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyProgress", {
-        /**
-         * Contains the number of bytes copied and
-         * the total bytes in the source in the last attempted Copy File operation
-         * where this file was the destination file. Can show between 0 and
-         * Content-Length bytes copied.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyProgress;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copySource", {
-        /**
-         * URL up to 2KB in length that specifies the
-         * source file used in the last attempted Copy File operation where this file
-         * was the destination file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copySource;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyStatus", {
-        /**
-         * State of the copy operation
-         * identified by 'x-ms-copy-id'. Possible values include: 'pending',
-         * 'success', 'aborted', 'failed'
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "copyStatusDescription", {
-        /**
-         * Only appears when
-         * x-ms-copy-status is failed or pending. Describes cause of fatal or
-         * non-fatal copy operation failure.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyStatusDescription;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseDuration", {
-        /**
-         * When a blob is leased,
-         * specifies whether the lease is of infinite or fixed duration. Possible
-         * values include: 'infinite', 'fixed'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseDuration;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseState", {
-        /**
-         * Lease state of the blob. Possible
-         * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseState;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "leaseStatus", {
-        /**
-         * The current lease status of the
-         * blob. Possible values include: 'locked', 'unlocked'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "date", {
-        /**
-         * A UTC date/time value generated by the service that
-         * indicates the time at which the response was initiated.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.date;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobCommittedBlockCount", {
-        /**
-         * The number of committed blocks
-         * present in the blob. This header is returned only for append blobs.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobCommittedBlockCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "etag", {
-        /**
-         * The ETag contains a value that you can use to
-         * perform operations conditionally, in quotes.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.etag;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "tagCount", {
-        /**
-         * The number of tags associated with the blob
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.tagCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "errorCode", {
-        /**
-         * The error code.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.errorCode;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isServerEncrypted", {
-        /**
-         * The value of this header is set to
-         * true if the file data and application metadata are completely encrypted
-         * using the specified algorithm. Otherwise, the value is set to false (when
-         * the file is unencrypted, or if only parts of the file/application metadata
-         * are encrypted).
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.isServerEncrypted;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "blobContentMD5", {
-        /**
-         * If the blob has a MD5 hash, and if
-         * request contains range header (Range or x-ms-range), this response header
-         * is returned with the value of the whole blob's MD5 value. This value may
-         * or may not be equal to the value returned in Content-MD5 header, with the
-         * latter calculated from the requested range.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobContentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "lastModified", {
-        /**
-         * Returns the date and time the file was last
-         * modified. Any operation that modifies the file or its properties updates
-         * the last modified time.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.lastModified;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "lastAccessed", {
-        /**
-         * Returns the UTC date and time generated by the service that indicates the time at which the blob was
-         * last read or written to.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.lastAccessed;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "metadata", {
-        /**
-         * A name-value pair
-         * to associate with a file storage object.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.metadata;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "requestId", {
-        /**
-         * This header uniquely identifies the request
-         * that was made and can be used for troubleshooting the request.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.requestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "clientRequestId", {
-        /**
-         * If a client request id header is sent in the request, this header will be present in the
-         * response with the same value.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.clientRequestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "version", {
-        /**
-         * Indicates the version of the Blob service used
-         * to execute the request.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.version;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "versionId", {
-        /**
-         * Indicates the versionId of the downloaded blob version.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.versionId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isCurrentVersion", {
-        /**
-         * Indicates whether version of this blob is a current version.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.isCurrentVersion;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "encryptionKeySha256", {
-        /**
-         * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
-         * when the blob was encrypted with a customer-provided key.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.encryptionKeySha256;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentCrc64", {
-        /**
-         * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
-         * true, then the request returns a crc64 for the range, as long as the range size is less than
-         * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
-         * specified in the same request, it will fail with 400(Bad Request)
-         */
-        get: function () {
-            return this.originalResponse.contentCrc64;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationDestinationPolicyId", {
-        /**
-         * Object Replication Policy Id of the destination blob.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.objectReplicationDestinationPolicyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "objectReplicationSourceProperties", {
-        /**
-         * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.objectReplicationSourceProperties;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "isSealed", {
-        /**
-         * If this blob has been sealed.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.isSealed;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "contentAsBlob", {
-        /**
-         * The response body as a browser Blob.
-         * Always undefined in node.js.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobBody;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "readableStreamBody", {
-        /**
-         * The response body as a node.js Readable stream.
-         * Always undefined in the browser.
-         *
-         * It will automatically retry when internal read stream unexpected ends.
-         *
-         * @readonly
-         */
-        get: function () {
-            return coreHttp.isNode ? this.blobDownloadStream : undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobDownloadResponse.prototype, "_response", {
-        /**
-         * The HTTP response.
-         */
-        get: function () {
-            return this.originalResponse._response;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    return BlobDownloadResponse;
-}());
+    /**
+     * Indicates that the service supports
+     * requests for partial file content.
+     *
+     * @readonly
+     */
+    get acceptRanges() {
+        return this.originalResponse.acceptRanges;
+    }
+    /**
+     * Returns if it was previously specified
+     * for the file.
+     *
+     * @readonly
+     */
+    get cacheControl() {
+        return this.originalResponse.cacheControl;
+    }
+    /**
+     * Returns the value that was specified
+     * for the 'x-ms-content-disposition' header and specifies how to process the
+     * response.
+     *
+     * @readonly
+     */
+    get contentDisposition() {
+        return this.originalResponse.contentDisposition;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Encoding request header.
+     *
+     * @readonly
+     */
+    get contentEncoding() {
+        return this.originalResponse.contentEncoding;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Language request header.
+     *
+     * @readonly
+     */
+    get contentLanguage() {
+        return this.originalResponse.contentLanguage;
+    }
+    /**
+     * The current sequence number for a
+     * page blob. This header is not returned for block blobs or append blobs.
+     *
+     * @readonly
+     */
+    get blobSequenceNumber() {
+        return this.originalResponse.blobSequenceNumber;
+    }
+    /**
+     * The blob's type. Possible values include:
+     * 'BlockBlob', 'PageBlob', 'AppendBlob'.
+     *
+     * @readonly
+     */
+    get blobType() {
+        return this.originalResponse.blobType;
+    }
+    /**
+     * The number of bytes present in the
+     * response body.
+     *
+     * @readonly
+     */
+    get contentLength() {
+        return this.originalResponse.contentLength;
+    }
+    /**
+     * If the file has an MD5 hash and the
+     * request is to read the full file, this response header is returned so that
+     * the client can check for message content integrity. If the request is to
+     * read a specified range and the 'x-ms-range-get-content-md5' is set to
+     * true, then the request returns an MD5 hash for the range, as long as the
+     * range size is less than or equal to 4 MB. If neither of these sets of
+     * conditions is true, then no value is returned for the 'Content-MD5'
+     * header.
+     *
+     * @readonly
+     */
+    get contentMD5() {
+        return this.originalResponse.contentMD5;
+    }
+    /**
+     * Indicates the range of bytes returned if
+     * the client requested a subset of the file by setting the Range request
+     * header.
+     *
+     * @readonly
+     */
+    get contentRange() {
+        return this.originalResponse.contentRange;
+    }
+    /**
+     * The content type specified for the file.
+     * The default content type is 'application/octet-stream'
+     *
+     * @readonly
+     */
+    get contentType() {
+        return this.originalResponse.contentType;
+    }
+    /**
+     * Conclusion time of the last attempted
+     * Copy File operation where this file was the destination file. This value
+     * can specify the time of a completed, aborted, or failed copy attempt.
+     *
+     * @readonly
+     */
+    get copyCompletedOn() {
+        return this.originalResponse.copyCompletedOn;
+    }
+    /**
+     * String identifier for the last attempted Copy
+     * File operation where this file was the destination file.
+     *
+     * @readonly
+     */
+    get copyId() {
+        return this.originalResponse.copyId;
+    }
+    /**
+     * Contains the number of bytes copied and
+     * the total bytes in the source in the last attempted Copy File operation
+     * where this file was the destination file. Can show between 0 and
+     * Content-Length bytes copied.
+     *
+     * @readonly
+     */
+    get copyProgress() {
+        return this.originalResponse.copyProgress;
+    }
+    /**
+     * URL up to 2KB in length that specifies the
+     * source file used in the last attempted Copy File operation where this file
+     * was the destination file.
+     *
+     * @readonly
+     */
+    get copySource() {
+        return this.originalResponse.copySource;
+    }
+    /**
+     * State of the copy operation
+     * identified by 'x-ms-copy-id'. Possible values include: 'pending',
+     * 'success', 'aborted', 'failed'
+     *
+     * @readonly
+     */
+    get copyStatus() {
+        return this.originalResponse.copyStatus;
+    }
+    /**
+     * Only appears when
+     * x-ms-copy-status is failed or pending. Describes cause of fatal or
+     * non-fatal copy operation failure.
+     *
+     * @readonly
+     */
+    get copyStatusDescription() {
+        return this.originalResponse.copyStatusDescription;
+    }
+    /**
+     * When a blob is leased,
+     * specifies whether the lease is of infinite or fixed duration. Possible
+     * values include: 'infinite', 'fixed'.
+     *
+     * @readonly
+     */
+    get leaseDuration() {
+        return this.originalResponse.leaseDuration;
+    }
+    /**
+     * Lease state of the blob. Possible
+     * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
+     *
+     * @readonly
+     */
+    get leaseState() {
+        return this.originalResponse.leaseState;
+    }
+    /**
+     * The current lease status of the
+     * blob. Possible values include: 'locked', 'unlocked'.
+     *
+     * @readonly
+     */
+    get leaseStatus() {
+        return this.originalResponse.leaseStatus;
+    }
+    /**
+     * A UTC date/time value generated by the service that
+     * indicates the time at which the response was initiated.
+     *
+     * @readonly
+     */
+    get date() {
+        return this.originalResponse.date;
+    }
+    /**
+     * The number of committed blocks
+     * present in the blob. This header is returned only for append blobs.
+     *
+     * @readonly
+     */
+    get blobCommittedBlockCount() {
+        return this.originalResponse.blobCommittedBlockCount;
+    }
+    /**
+     * The ETag contains a value that you can use to
+     * perform operations conditionally, in quotes.
+     *
+     * @readonly
+     */
+    get etag() {
+        return this.originalResponse.etag;
+    }
+    /**
+     * The number of tags associated with the blob
+     *
+     * @readonly
+     */
+    get tagCount() {
+        return this.originalResponse.tagCount;
+    }
+    /**
+     * The error code.
+     *
+     * @readonly
+     */
+    get errorCode() {
+        return this.originalResponse.errorCode;
+    }
+    /**
+     * The value of this header is set to
+     * true if the file data and application metadata are completely encrypted
+     * using the specified algorithm. Otherwise, the value is set to false (when
+     * the file is unencrypted, or if only parts of the file/application metadata
+     * are encrypted).
+     *
+     * @readonly
+     */
+    get isServerEncrypted() {
+        return this.originalResponse.isServerEncrypted;
+    }
+    /**
+     * If the blob has a MD5 hash, and if
+     * request contains range header (Range or x-ms-range), this response header
+     * is returned with the value of the whole blob's MD5 value. This value may
+     * or may not be equal to the value returned in Content-MD5 header, with the
+     * latter calculated from the requested range.
+     *
+     * @readonly
+     */
+    get blobContentMD5() {
+        return this.originalResponse.blobContentMD5;
+    }
+    /**
+     * Returns the date and time the file was last
+     * modified. Any operation that modifies the file or its properties updates
+     * the last modified time.
+     *
+     * @readonly
+     */
+    get lastModified() {
+        return this.originalResponse.lastModified;
+    }
+    /**
+     * Returns the UTC date and time generated by the service that indicates the time at which the blob was
+     * last read or written to.
+     *
+     * @readonly
+     */
+    get lastAccessed() {
+        return this.originalResponse.lastAccessed;
+    }
+    /**
+     * A name-value pair
+     * to associate with a file storage object.
+     *
+     * @readonly
+     */
+    get metadata() {
+        return this.originalResponse.metadata;
+    }
+    /**
+     * This header uniquely identifies the request
+     * that was made and can be used for troubleshooting the request.
+     *
+     * @readonly
+     */
+    get requestId() {
+        return this.originalResponse.requestId;
+    }
+    /**
+     * If a client request id header is sent in the request, this header will be present in the
+     * response with the same value.
+     *
+     * @readonly
+     */
+    get clientRequestId() {
+        return this.originalResponse.clientRequestId;
+    }
+    /**
+     * Indicates the version of the Blob service used
+     * to execute the request.
+     *
+     * @readonly
+     */
+    get version() {
+        return this.originalResponse.version;
+    }
+    /**
+     * Indicates the versionId of the downloaded blob version.
+     *
+     * @readonly
+     */
+    get versionId() {
+        return this.originalResponse.versionId;
+    }
+    /**
+     * Indicates whether version of this blob is a current version.
+     *
+     * @readonly
+     */
+    get isCurrentVersion() {
+        return this.originalResponse.isCurrentVersion;
+    }
+    /**
+     * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
+     * when the blob was encrypted with a customer-provided key.
+     *
+     * @readonly
+     */
+    get encryptionKeySha256() {
+        return this.originalResponse.encryptionKeySha256;
+    }
+    /**
+     * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
+     * true, then the request returns a crc64 for the range, as long as the range size is less than
+     * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
+     * specified in the same request, it will fail with 400(Bad Request)
+     */
+    get contentCrc64() {
+        return this.originalResponse.contentCrc64;
+    }
+    /**
+     * Object Replication Policy Id of the destination blob.
+     *
+     * @readonly
+     */
+    get objectReplicationDestinationPolicyId() {
+        return this.originalResponse.objectReplicationDestinationPolicyId;
+    }
+    /**
+     * Parsed Object Replication Policy Id, Rule Id(s) and status of the source blob.
+     *
+     * @readonly
+     */
+    get objectReplicationSourceProperties() {
+        return this.originalResponse.objectReplicationSourceProperties;
+    }
+    /**
+     * If this blob has been sealed.
+     *
+     * @readonly
+     */
+    get isSealed() {
+        return this.originalResponse.isSealed;
+    }
+    /**
+     * The response body as a browser Blob.
+     * Always undefined in node.js.
+     *
+     * @readonly
+     */
+    get contentAsBlob() {
+        return this.originalResponse.blobBody;
+    }
+    /**
+     * The response body as a node.js Readable stream.
+     * Always undefined in the browser.
+     *
+     * It will automatically retry when internal read stream unexpected ends.
+     *
+     * @readonly
+     */
+    get readableStreamBody() {
+        return coreHttp.isNode ? this.blobDownloadStream : undefined;
+    }
+    /**
+     * The HTTP response.
+     */
+    get _response() {
+        return this.originalResponse._response;
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var AVRO_SYNC_MARKER_SIZE = 16;
-var AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
-var AVRO_CODEC_KEY = "avro.codec";
-var AVRO_SCHEMA_KEY = "avro.schema";
+const AVRO_SYNC_MARKER_SIZE = 16;
+const AVRO_INIT_BYTES = new Uint8Array([79, 98, 106, 1]);
+const AVRO_CODEC_KEY = "avro.codec";
+const AVRO_SCHEMA_KEY = "avro.schema";
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -80907,7 +79325,7 @@ function arraysEqual(a, b) {
         return false;
     if (a.length != b.length)
         return false;
-    for (var i = 0; i < a.length; ++i) {
+    for (let i = 0; i < a.length; ++i) {
         if (a[i] !== b[i])
             return false;
     }
@@ -80915,9 +79333,8 @@ function arraysEqual(a, b) {
 }
 
 // Copyright (c) Microsoft Corporation.
-var AvroParser = /** @class */ (function () {
-    function AvroParser() {
-    }
+// Licensed under the MIT license.
+class AvroParser {
     /**
      * Reads a fixed number of bytes from the stream.
      *
@@ -80925,294 +79342,135 @@ var AvroParser = /** @class */ (function () {
      * @param length -
      * @param options -
      */
-    AvroParser.readFixedBytes = function (stream, length, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var bytes;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, stream.read(length, { abortSignal: options.abortSignal })];
-                    case 1:
-                        bytes = _a.sent();
-                        if (bytes.length != length) {
-                            throw new Error("Hit stream end.");
-                        }
-                        return [2 /*return*/, bytes];
-                }
-            });
-        });
-    };
+    static async readFixedBytes(stream, length, options = {}) {
+        const bytes = await stream.read(length, { abortSignal: options.abortSignal });
+        if (bytes.length != length) {
+            throw new Error("Hit stream end.");
+        }
+        return bytes;
+    }
     /**
      * Reads a single byte from the stream.
      *
      * @param stream -
      * @param options -
      */
-    AvroParser.readByte = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buf;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 1, options)];
-                    case 1:
-                        buf = _a.sent();
-                        return [2 /*return*/, buf[0]];
-                }
-            });
-        });
-    };
+    static async readByte(stream, options = {}) {
+        const buf = await AvroParser.readFixedBytes(stream, 1, options);
+        return buf[0];
+    }
     // int and long are stored in variable-length zig-zag coding.
     // variable-length: https://lucene.apache.org/core/3_5_0/fileformats.html#VInt
     // zig-zag: https://developers.google.com/protocol-buffers/docs/encoding?csw=1#types
-    AvroParser.readZigZagLong = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var zigZagEncoded, significanceInBit, byte, haveMoreByte, significanceInFloat, res;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        zigZagEncoded = 0;
-                        significanceInBit = 0;
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 2:
-                        byte = _a.sent();
-                        haveMoreByte = byte & 0x80;
-                        zigZagEncoded |= (byte & 0x7f) << significanceInBit;
-                        significanceInBit += 7;
-                        _a.label = 3;
-                    case 3:
-                        if (haveMoreByte && significanceInBit < 28) return [3 /*break*/, 1];
-                        _a.label = 4;
-                    case 4:
-                        if (!haveMoreByte) return [3 /*break*/, 9];
-                        // Switch to float arithmetic
-                        zigZagEncoded = zigZagEncoded;
-                        significanceInFloat = 268435456; // 2 ** 28.
-                        _a.label = 5;
-                    case 5: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 6:
-                        byte = _a.sent();
-                        zigZagEncoded += (byte & 0x7f) * significanceInFloat;
-                        significanceInFloat *= 128; // 2 ** 7
-                        _a.label = 7;
-                    case 7:
-                        if (byte & 0x80) return [3 /*break*/, 5];
-                        _a.label = 8;
-                    case 8:
-                        res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
-                        if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
-                            throw new Error("Integer overflow.");
-                        }
-                        return [2 /*return*/, res];
-                    case 9: return [2 /*return*/, (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1)];
-                }
-            });
-        });
-    };
-    AvroParser.readLong = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
-            });
-        });
-    };
-    AvroParser.readInt = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, AvroParser.readZigZagLong(stream, options)];
-            });
-        });
-    };
-    AvroParser.readNull = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, null];
-            });
-        });
-    };
-    AvroParser.readBoolean = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var b;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readByte(stream, options)];
-                    case 1:
-                        b = _a.sent();
-                        if (b == 1) {
-                            return [2 /*return*/, true];
-                        }
-                        else if (b == 0) {
-                            return [2 /*return*/, false];
-                        }
-                        else {
-                            throw new Error("Byte was not a boolean.");
-                        }
-                }
-            });
-        });
-    };
-    AvroParser.readFloat = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, view;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 4, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
-                        return [2 /*return*/, view.getFloat32(0, true)]; // littleEndian = true
-                }
-            });
-        });
-    };
-    AvroParser.readDouble = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, view;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(stream, 8, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
-                        return [2 /*return*/, view.getFloat64(0, true)]; // littleEndian = true
-                }
-            });
-        });
-    };
-    AvroParser.readBytes = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var size;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 1:
-                        size = _a.sent();
-                        if (size < 0) {
-                            throw new Error("Bytes size was negative.");
-                        }
-                        return [4 /*yield*/, stream.read(size, { abortSignal: options.abortSignal })];
-                    case 2: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    AvroParser.readString = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var u8arr, utf8decoder;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
-                    case 1:
-                        u8arr = _a.sent();
-                        // polyfill TextDecoder to be backward compatible with older
-                        // nodejs that doesn't expose TextDecoder as a global variable
-                        if (typeof TextDecoder === "undefined" && "function" !== "undefined") {
-                            global.TextDecoder = __webpack_require__(669).TextDecoder;
-                        }
-                        utf8decoder = new TextDecoder();
-                        return [2 /*return*/, utf8decoder.decode(u8arr)];
-                }
-            });
-        });
-    };
-    AvroParser.readMapPair = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var key, value;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readString(stream, options)];
-                    case 1:
-                        key = _a.sent();
-                        return [4 /*yield*/, readItemMethod(stream, options)];
-                    case 2:
-                        value = _a.sent();
-                        return [2 /*return*/, { key: key, value: value }];
-                }
-            });
-        });
-    };
-    AvroParser.readMap = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var readPairMethod, pairs, dict, _i, pairs_1, pair;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        readPairMethod = function (stream, options) {
-                            if (options === void 0) { options = {}; }
-                            return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, AvroParser.readMapPair(stream, readItemMethod, options)];
-                                        case 1: return [2 /*return*/, _a.sent()];
-                                    }
-                                });
-                            });
-                        };
-                        return [4 /*yield*/, AvroParser.readArray(stream, readPairMethod, options)];
-                    case 1:
-                        pairs = _a.sent();
-                        dict = {};
-                        for (_i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) {
-                            pair = pairs_1[_i];
-                            dict[pair.key] = pair.value;
-                        }
-                        return [2 /*return*/, dict];
-                }
-            });
-        });
-    };
-    AvroParser.readArray = function (stream, readItemMethod, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var items, count, item;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        items = [];
-                        return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 1:
-                        count = _a.sent();
-                        _a.label = 2;
-                    case 2:
-                        if (!(count != 0)) return [3 /*break*/, 8];
-                        if (!(count < 0)) return [3 /*break*/, 4];
-                        // Ignore block sizes
-                        return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 3:
-                        // Ignore block sizes
-                        _a.sent();
-                        count = -count;
-                        _a.label = 4;
-                    case 4:
-                        if (!count--) return [3 /*break*/, 6];
-                        return [4 /*yield*/, readItemMethod(stream, options)];
-                    case 5:
-                        item = _a.sent();
-                        items.push(item);
-                        return [3 /*break*/, 4];
-                    case 6: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 7:
-                        count = _a.sent();
-                        return [3 /*break*/, 2];
-                    case 8: return [2 /*return*/, items];
-                }
-            });
-        });
-    };
-    return AvroParser;
-}());
+    static async readZigZagLong(stream, options = {}) {
+        let zigZagEncoded = 0;
+        let significanceInBit = 0;
+        let byte, haveMoreByte, significanceInFloat;
+        do {
+            byte = await AvroParser.readByte(stream, options);
+            haveMoreByte = byte & 0x80;
+            zigZagEncoded |= (byte & 0x7f) << significanceInBit;
+            significanceInBit += 7;
+        } while (haveMoreByte && significanceInBit < 28); // bitwise operation only works for 32-bit integers
+        if (haveMoreByte) {
+            // Switch to float arithmetic
+            zigZagEncoded = zigZagEncoded;
+            significanceInFloat = 268435456; // 2 ** 28.
+            do {
+                byte = await AvroParser.readByte(stream, options);
+                zigZagEncoded += (byte & 0x7f) * significanceInFloat;
+                significanceInFloat *= 128; // 2 ** 7
+            } while (byte & 0x80);
+            const res = (zigZagEncoded % 2 ? -(zigZagEncoded + 1) : zigZagEncoded) / 2;
+            if (res < Number.MIN_SAFE_INTEGER || res > Number.MAX_SAFE_INTEGER) {
+                throw new Error("Integer overflow.");
+            }
+            return res;
+        }
+        return (zigZagEncoded >> 1) ^ -(zigZagEncoded & 1);
+    }
+    static async readLong(stream, options = {}) {
+        return AvroParser.readZigZagLong(stream, options);
+    }
+    static async readInt(stream, options = {}) {
+        return AvroParser.readZigZagLong(stream, options);
+    }
+    static async readNull() {
+        return null;
+    }
+    static async readBoolean(stream, options = {}) {
+        const b = await AvroParser.readByte(stream, options);
+        if (b == 1) {
+            return true;
+        }
+        else if (b == 0) {
+            return false;
+        }
+        else {
+            throw new Error("Byte was not a boolean.");
+        }
+    }
+    static async readFloat(stream, options = {}) {
+        const u8arr = await AvroParser.readFixedBytes(stream, 4, options);
+        const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
+        return view.getFloat32(0, true); // littleEndian = true
+    }
+    static async readDouble(stream, options = {}) {
+        const u8arr = await AvroParser.readFixedBytes(stream, 8, options);
+        const view = new DataView(u8arr.buffer, u8arr.byteOffset, u8arr.byteLength);
+        return view.getFloat64(0, true); // littleEndian = true
+    }
+    static async readBytes(stream, options = {}) {
+        const size = await AvroParser.readLong(stream, options);
+        if (size < 0) {
+            throw new Error("Bytes size was negative.");
+        }
+        return await stream.read(size, { abortSignal: options.abortSignal });
+    }
+    static async readString(stream, options = {}) {
+        const u8arr = await AvroParser.readBytes(stream, options);
+        // polyfill TextDecoder to be backward compatible with older
+        // nodejs that doesn't expose TextDecoder as a global variable
+        if (typeof TextDecoder === "undefined" && "function" !== "undefined") {
+            global.TextDecoder = __webpack_require__(669).TextDecoder;
+        }
+        // FUTURE: need TextDecoder polyfill for IE
+        const utf8decoder = new TextDecoder();
+        return utf8decoder.decode(u8arr);
+    }
+    static async readMapPair(stream, readItemMethod, options = {}) {
+        const key = await AvroParser.readString(stream, options);
+        // FUTURE: this won't work with readFixed (currently not supported) which needs a length as the parameter.
+        const value = await readItemMethod(stream, options);
+        return { key, value };
+    }
+    static async readMap(stream, readItemMethod, options = {}) {
+        const readPairMethod = async (stream, options = {}) => {
+            return await AvroParser.readMapPair(stream, readItemMethod, options);
+        };
+        const pairs = await AvroParser.readArray(stream, readPairMethod, options);
+        const dict = {};
+        for (const pair of pairs) {
+            dict[pair.key] = pair.value;
+        }
+        return dict;
+    }
+    static async readArray(stream, readItemMethod, options = {}) {
+        const items = [];
+        for (let count = await AvroParser.readLong(stream, options); count != 0; count = await AvroParser.readLong(stream, options)) {
+            if (count < 0) {
+                // Ignore block sizes
+                await AvroParser.readLong(stream, options);
+                count = -count;
+            }
+            while (count--) {
+                const item = await readItemMethod(stream, options);
+                items.push(item);
+            }
+        }
+        return items;
+    }
+}
 var AvroComplex;
 (function (AvroComplex) {
     AvroComplex["RECORD"] = "record";
@@ -81222,13 +79480,11 @@ var AvroComplex;
     AvroComplex["UNION"] = "union";
     AvroComplex["FIXED"] = "fixed";
 })(AvroComplex || (AvroComplex = {}));
-var AvroType = /** @class */ (function () {
-    function AvroType() {
-    }
+class AvroType {
     /**
      * Determines the AvroType from the Avro Schema.
      */
-    AvroType.fromSchema = function (schema) {
+    static fromSchema(schema) {
         if (typeof schema === "string") {
             return AvroType.fromStringSchema(schema);
         }
@@ -81238,8 +79494,8 @@ var AvroType = /** @class */ (function () {
         else {
             return AvroType.fromObjectSchema(schema);
         }
-    };
-    AvroType.fromStringSchema = function (schema) {
+    }
+    static fromStringSchema(schema) {
         switch (schema) {
             case AvroPrimitive.NULL:
             case AvroPrimitive.BOOLEAN:
@@ -81251,14 +79507,14 @@ var AvroType = /** @class */ (function () {
             case AvroPrimitive.STRING:
                 return new AvroPrimitiveType(schema);
             default:
-                throw new Error("Unexpected Avro type " + schema);
+                throw new Error(`Unexpected Avro type ${schema}`);
         }
-    };
-    AvroType.fromArraySchema = function (schema) {
+    }
+    static fromArraySchema(schema) {
         return new AvroUnionType(schema.map(AvroType.fromSchema));
-    };
-    AvroType.fromObjectSchema = function (schema) {
-        var type = schema.type;
+    }
+    static fromObjectSchema(schema) {
+        const type = schema.type;
         // Primitives can be defined as strings or objects
         try {
             return AvroType.fromStringSchema(type);
@@ -81267,41 +79523,39 @@ var AvroType = /** @class */ (function () {
         switch (type) {
             case AvroComplex.RECORD:
                 if (schema.aliases) {
-                    throw new Error("aliases currently is not supported, schema: " + schema);
+                    throw new Error(`aliases currently is not supported, schema: ${schema}`);
                 }
                 if (!schema.name) {
-                    throw new Error("Required attribute 'name' doesn't exist on schema: " + schema);
+                    throw new Error(`Required attribute 'name' doesn't exist on schema: ${schema}`);
                 }
-                var fields = {};
+                const fields = {};
                 if (!schema.fields) {
-                    throw new Error("Required attribute 'fields' doesn't exist on schema: " + schema);
+                    throw new Error(`Required attribute 'fields' doesn't exist on schema: ${schema}`);
                 }
-                for (var _i = 0, _a = schema.fields; _i < _a.length; _i++) {
-                    var field = _a[_i];
+                for (const field of schema.fields) {
                     fields[field.name] = AvroType.fromSchema(field.type);
                 }
                 return new AvroRecordType(fields, schema.name);
             case AvroComplex.ENUM:
                 if (schema.aliases) {
-                    throw new Error("aliases currently is not supported, schema: " + schema);
+                    throw new Error(`aliases currently is not supported, schema: ${schema}`);
                 }
                 if (!schema.symbols) {
-                    throw new Error("Required attribute 'symbols' doesn't exist on schema: " + schema);
+                    throw new Error(`Required attribute 'symbols' doesn't exist on schema: ${schema}`);
                 }
                 return new AvroEnumType(schema.symbols);
             case AvroComplex.MAP:
                 if (!schema.values) {
-                    throw new Error("Required attribute 'values' doesn't exist on schema: " + schema);
+                    throw new Error(`Required attribute 'values' doesn't exist on schema: ${schema}`);
                 }
                 return new AvroMapType(AvroType.fromSchema(schema.values));
             case AvroComplex.ARRAY: // Unused today
             case AvroComplex.FIXED: // Unused today
             default:
-                throw new Error("Unexpected Avro type " + type + " in " + schema);
+                throw new Error(`Unexpected Avro type ${type} in ${schema}`);
         }
-    };
-    return AvroType;
-}());
+    }
+}
 var AvroPrimitive;
 (function (AvroPrimitive) {
     AvroPrimitive["NULL"] = "null";
@@ -81313,179 +79567,87 @@ var AvroPrimitive;
     AvroPrimitive["BYTES"] = "bytes";
     AvroPrimitive["STRING"] = "string";
 })(AvroPrimitive || (AvroPrimitive = {}));
-var AvroPrimitiveType = /** @class */ (function (_super) {
-    tslib.__extends(AvroPrimitiveType, _super);
-    function AvroPrimitiveType(primitive) {
-        var _this = _super.call(this) || this;
-        _this._primitive = primitive;
-        return _this;
+class AvroPrimitiveType extends AvroType {
+    constructor(primitive) {
+        super();
+        this._primitive = primitive;
     }
-    AvroPrimitiveType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = this._primitive;
-                        switch (_a) {
-                            case AvroPrimitive.NULL: return [3 /*break*/, 1];
-                            case AvroPrimitive.BOOLEAN: return [3 /*break*/, 3];
-                            case AvroPrimitive.INT: return [3 /*break*/, 5];
-                            case AvroPrimitive.LONG: return [3 /*break*/, 7];
-                            case AvroPrimitive.FLOAT: return [3 /*break*/, 9];
-                            case AvroPrimitive.DOUBLE: return [3 /*break*/, 11];
-                            case AvroPrimitive.BYTES: return [3 /*break*/, 13];
-                            case AvroPrimitive.STRING: return [3 /*break*/, 15];
-                        }
-                        return [3 /*break*/, 17];
-                    case 1: return [4 /*yield*/, AvroParser.readNull()];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3: return [4 /*yield*/, AvroParser.readBoolean(stream, options)];
-                    case 4: return [2 /*return*/, _b.sent()];
-                    case 5: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 6: return [2 /*return*/, _b.sent()];
-                    case 7: return [4 /*yield*/, AvroParser.readLong(stream, options)];
-                    case 8: return [2 /*return*/, _b.sent()];
-                    case 9: return [4 /*yield*/, AvroParser.readFloat(stream, options)];
-                    case 10: return [2 /*return*/, _b.sent()];
-                    case 11: return [4 /*yield*/, AvroParser.readDouble(stream, options)];
-                    case 12: return [2 /*return*/, _b.sent()];
-                    case 13: return [4 /*yield*/, AvroParser.readBytes(stream, options)];
-                    case 14: return [2 /*return*/, _b.sent()];
-                    case 15: return [4 /*yield*/, AvroParser.readString(stream, options)];
-                    case 16: return [2 /*return*/, _b.sent()];
-                    case 17: throw new Error("Unknown Avro Primitive");
-                }
-            });
-        });
-    };
-    return AvroPrimitiveType;
-}(AvroType));
-var AvroEnumType = /** @class */ (function (_super) {
-    tslib.__extends(AvroEnumType, _super);
-    function AvroEnumType(symbols) {
-        var _this = _super.call(this) || this;
-        _this._symbols = symbols;
-        return _this;
+    async read(stream, options = {}) {
+        switch (this._primitive) {
+            case AvroPrimitive.NULL:
+                return await AvroParser.readNull();
+            case AvroPrimitive.BOOLEAN:
+                return await AvroParser.readBoolean(stream, options);
+            case AvroPrimitive.INT:
+                return await AvroParser.readInt(stream, options);
+            case AvroPrimitive.LONG:
+                return await AvroParser.readLong(stream, options);
+            case AvroPrimitive.FLOAT:
+                return await AvroParser.readFloat(stream, options);
+            case AvroPrimitive.DOUBLE:
+                return await AvroParser.readDouble(stream, options);
+            case AvroPrimitive.BYTES:
+                return await AvroParser.readBytes(stream, options);
+            case AvroPrimitive.STRING:
+                return await AvroParser.readString(stream, options);
+            default:
+                throw new Error("Unknown Avro Primitive");
+        }
     }
-    AvroEnumType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var value;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 1:
-                        value = _a.sent();
-                        return [2 /*return*/, this._symbols[value]];
-                }
-            });
-        });
-    };
-    return AvroEnumType;
-}(AvroType));
-var AvroUnionType = /** @class */ (function (_super) {
-    tslib.__extends(AvroUnionType, _super);
-    function AvroUnionType(types) {
-        var _this = _super.call(this) || this;
-        _this._types = types;
-        return _this;
+}
+class AvroEnumType extends AvroType {
+    constructor(symbols) {
+        super();
+        this._symbols = symbols;
     }
-    AvroUnionType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var typeIndex;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readInt(stream, options)];
-                    case 1:
-                        typeIndex = _a.sent();
-                        return [4 /*yield*/, this._types[typeIndex].read(stream, options)];
-                    case 2: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    return AvroUnionType;
-}(AvroType));
-var AvroMapType = /** @class */ (function (_super) {
-    tslib.__extends(AvroMapType, _super);
-    function AvroMapType(itemType) {
-        var _this = _super.call(this) || this;
-        _this._itemType = itemType;
-        return _this;
+    async read(stream, options = {}) {
+        const value = await AvroParser.readInt(stream, options);
+        return this._symbols[value];
     }
-    AvroMapType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var readItemMethod;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        readItemMethod = function (s, options) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                            return tslib.__generator(this, function (_a) {
-                                switch (_a.label) {
-                                    case 0: return [4 /*yield*/, this._itemType.read(s, options)];
-                                    case 1: return [2 /*return*/, _a.sent()];
-                                }
-                            });
-                        }); };
-                        return [4 /*yield*/, AvroParser.readMap(stream, readItemMethod, options)];
-                    case 1: return [2 /*return*/, _a.sent()];
-                }
-            });
-        });
-    };
-    return AvroMapType;
-}(AvroType));
-var AvroRecordType = /** @class */ (function (_super) {
-    tslib.__extends(AvroRecordType, _super);
-    function AvroRecordType(fields, name) {
-        var _this = _super.call(this) || this;
-        _this._fields = fields;
-        _this._name = name;
-        return _this;
+}
+class AvroUnionType extends AvroType {
+    constructor(types) {
+        super();
+        this._types = types;
     }
-    AvroRecordType.prototype.read = function (stream, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var record, _a, _b, _i, key, _c, _d;
-            return tslib.__generator(this, function (_e) {
-                switch (_e.label) {
-                    case 0:
-                        record = {};
-                        record["$schema"] = this._name;
-                        _a = [];
-                        for (_b in this._fields)
-                            _a.push(_b);
-                        _i = 0;
-                        _e.label = 1;
-                    case 1:
-                        if (!(_i < _a.length)) return [3 /*break*/, 4];
-                        key = _a[_i];
-                        if (!this._fields.hasOwnProperty(key)) return [3 /*break*/, 3];
-                        _c = record;
-                        _d = key;
-                        return [4 /*yield*/, this._fields[key].read(stream, options)];
-                    case 2:
-                        _c[_d] = _e.sent();
-                        _e.label = 3;
-                    case 3:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 4: return [2 /*return*/, record];
-                }
-            });
-        });
-    };
-    return AvroRecordType;
-}(AvroType));
+    async read(stream, options = {}) {
+        const typeIndex = await AvroParser.readInt(stream, options);
+        return await this._types[typeIndex].read(stream, options);
+    }
+}
+class AvroMapType extends AvroType {
+    constructor(itemType) {
+        super();
+        this._itemType = itemType;
+    }
+    async read(stream, options = {}) {
+        const readItemMethod = async (s, options) => {
+            return await this._itemType.read(s, options);
+        };
+        return await AvroParser.readMap(stream, readItemMethod, options);
+    }
+}
+class AvroRecordType extends AvroType {
+    constructor(fields, name) {
+        super();
+        this._fields = fields;
+        this._name = name;
+    }
+    async read(stream, options = {}) {
+        const record = {};
+        record["$schema"] = this._name;
+        for (const key in this._fields) {
+            if (this._fields.hasOwnProperty(key)) {
+                record[key] = await this._fields[key].read(stream, options);
+            }
+        }
+        return record;
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-var AvroReader = /** @class */ (function () {
-    function AvroReader(dataStream, headerStream, currentBlockOffset, indexWithinCurrentBlock) {
+class AvroReader {
+    constructor(dataStream, headerStream, currentBlockOffset, indexWithinCurrentBlock) {
         this._dataStream = dataStream;
         this._headerStream = headerStream || dataStream;
         this._initialized = false;
@@ -81493,261 +79655,178 @@ var AvroReader = /** @class */ (function () {
         this._objectIndex = indexWithinCurrentBlock || 0;
         this._initialBlockOffset = currentBlockOffset || 0;
     }
-    Object.defineProperty(AvroReader.prototype, "blockOffset", {
-        get: function () {
-            return this._blockOffset;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(AvroReader.prototype, "objectIndex", {
-        get: function () {
-            return this._objectIndex;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    AvroReader.prototype.initialize = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var header, _a, codec, _b, schema, _c, i;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0: return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_INIT_BYTES.length, {
-                            abortSignal: options.abortSignal
-                        })];
-                    case 1:
-                        header = _d.sent();
-                        if (!arraysEqual(header, AVRO_INIT_BYTES)) {
-                            throw new Error("Stream is not an Avro file.");
-                        }
-                        // File metadata is written as if defined by the following map schema:
-                        // { "type": "map", "values": "bytes"}
-                        _a = this;
-                        return [4 /*yield*/, AvroParser.readMap(this._headerStream, AvroParser.readString, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 2:
-                        // File metadata is written as if defined by the following map schema:
-                        // { "type": "map", "values": "bytes"}
-                        _a._metadata = _d.sent();
-                        codec = this._metadata[AVRO_CODEC_KEY];
-                        if (!(codec == undefined || codec == "null")) {
-                            throw new Error("Codecs are not supported");
-                        }
-                        // The 16-byte, randomly-generated sync marker for this file.
-                        _b = this;
-                        return [4 /*yield*/, AvroParser.readFixedBytes(this._headerStream, AVRO_SYNC_MARKER_SIZE, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 3:
-                        // The 16-byte, randomly-generated sync marker for this file.
-                        _b._syncMarker = _d.sent();
-                        schema = JSON.parse(this._metadata[AVRO_SCHEMA_KEY]);
-                        this._itemType = AvroType.fromSchema(schema);
-                        if (this._blockOffset == 0) {
-                            this._blockOffset = this._initialBlockOffset + this._dataStream.position;
-                        }
-                        _c = this;
-                        return [4 /*yield*/, AvroParser.readLong(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            })];
-                    case 4:
-                        _c._itemsRemainingInBlock = _d.sent();
-                        // skip block length
-                        return [4 /*yield*/, AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal })];
-                    case 5:
-                        // skip block length
-                        _d.sent();
-                        this._initialized = true;
-                        if (!(this._objectIndex && this._objectIndex > 0)) return [3 /*break*/, 9];
-                        i = 0;
-                        _d.label = 6;
-                    case 6:
-                        if (!(i < this._objectIndex)) return [3 /*break*/, 9];
-                        return [4 /*yield*/, this._itemType.read(this._dataStream, { abortSignal: options.abortSignal })];
-                    case 7:
-                        _d.sent();
-                        this._itemsRemainingInBlock--;
-                        _d.label = 8;
-                    case 8:
-                        i++;
-                        return [3 /*break*/, 6];
-                    case 9: return [2 /*return*/];
-                }
-            });
+    get blockOffset() {
+        return this._blockOffset;
+    }
+    get objectIndex() {
+        return this._objectIndex;
+    }
+    async initialize(options = {}) {
+        const header = await AvroParser.readFixedBytes(this._headerStream, AVRO_INIT_BYTES.length, {
+            abortSignal: options.abortSignal
         });
-    };
-    AvroReader.prototype.hasNext = function () {
+        if (!arraysEqual(header, AVRO_INIT_BYTES)) {
+            throw new Error("Stream is not an Avro file.");
+        }
+        // File metadata is written as if defined by the following map schema:
+        // { "type": "map", "values": "bytes"}
+        this._metadata = await AvroParser.readMap(this._headerStream, AvroParser.readString, {
+            abortSignal: options.abortSignal
+        });
+        // Validate codec
+        const codec = this._metadata[AVRO_CODEC_KEY];
+        if (!(codec == undefined || codec == "null")) {
+            throw new Error("Codecs are not supported");
+        }
+        // The 16-byte, randomly-generated sync marker for this file.
+        this._syncMarker = await AvroParser.readFixedBytes(this._headerStream, AVRO_SYNC_MARKER_SIZE, {
+            abortSignal: options.abortSignal
+        });
+        // Parse the schema
+        const schema = JSON.parse(this._metadata[AVRO_SCHEMA_KEY]);
+        this._itemType = AvroType.fromSchema(schema);
+        if (this._blockOffset == 0) {
+            this._blockOffset = this._initialBlockOffset + this._dataStream.position;
+        }
+        this._itemsRemainingInBlock = await AvroParser.readLong(this._dataStream, {
+            abortSignal: options.abortSignal
+        });
+        // skip block length
+        await AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal });
+        this._initialized = true;
+        if (this._objectIndex && this._objectIndex > 0) {
+            for (let i = 0; i < this._objectIndex; i++) {
+                await this._itemType.read(this._dataStream, { abortSignal: options.abortSignal });
+                this._itemsRemainingInBlock--;
+            }
+        }
+    }
+    hasNext() {
         return !this._initialized || this._itemsRemainingInBlock > 0;
-    };
-    AvroReader.prototype.parseObjects = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function parseObjects_1() {
-            var result, marker, _a, err_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!!this._initialized) return [3 /*break*/, 2];
-                        return [4 /*yield*/, tslib.__await(this.initialize(options))];
-                    case 1:
-                        _b.sent();
-                        _b.label = 2;
-                    case 2:
-                        if (!this.hasNext()) return [3 /*break*/, 13];
-                        return [4 /*yield*/, tslib.__await(this._itemType.read(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 3:
-                        result = _b.sent();
-                        this._itemsRemainingInBlock--;
-                        this._objectIndex++;
-                        if (!(this._itemsRemainingInBlock == 0)) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(AvroParser.readFixedBytes(this._dataStream, AVRO_SYNC_MARKER_SIZE, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 4:
-                        marker = _b.sent();
-                        this._blockOffset = this._initialBlockOffset + this._dataStream.position;
-                        this._objectIndex = 0;
-                        if (!arraysEqual(this._syncMarker, marker)) {
-                            throw new Error("Stream is not a valid Avro file.");
-                        }
-                        _b.label = 5;
-                    case 5:
-                        _b.trys.push([5, 7, , 8]);
-                        _a = this;
-                        return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, {
-                                abortSignal: options.abortSignal
-                            }))];
-                    case 6:
-                        _a._itemsRemainingInBlock = _b.sent();
-                        return [3 /*break*/, 8];
-                    case 7:
-                        err_1 = _b.sent();
+    }
+    parseObjects(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* parseObjects_1() {
+            if (!this._initialized) {
+                yield tslib.__await(this.initialize(options));
+            }
+            while (this.hasNext()) {
+                const result = yield tslib.__await(this._itemType.read(this._dataStream, {
+                    abortSignal: options.abortSignal
+                }));
+                this._itemsRemainingInBlock--;
+                this._objectIndex++;
+                if (this._itemsRemainingInBlock == 0) {
+                    const marker = yield tslib.__await(AvroParser.readFixedBytes(this._dataStream, AVRO_SYNC_MARKER_SIZE, {
+                        abortSignal: options.abortSignal
+                    }));
+                    this._blockOffset = this._initialBlockOffset + this._dataStream.position;
+                    this._objectIndex = 0;
+                    if (!arraysEqual(this._syncMarker, marker)) {
+                        throw new Error("Stream is not a valid Avro file.");
+                    }
+                    try {
+                        this._itemsRemainingInBlock = yield tslib.__await(AvroParser.readLong(this._dataStream, {
+                            abortSignal: options.abortSignal
+                        }));
+                    }
+                    catch (err) {
                         // We hit the end of the stream.
                         this._itemsRemainingInBlock = 0;
-                        return [3 /*break*/, 8];
-                    case 8:
-                        if (!(this._itemsRemainingInBlock > 0)) return [3 /*break*/, 10];
+                    }
+                    if (this._itemsRemainingInBlock > 0) {
                         // Ignore block size
-                        return [4 /*yield*/, tslib.__await(AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal }))];
-                    case 9:
-                        // Ignore block size
-                        _b.sent();
-                        _b.label = 10;
-                    case 10: return [4 /*yield*/, tslib.__await(result)];
-                    case 11: return [4 /*yield*/, _b.sent()];
-                    case 12:
-                        _b.sent();
-                        return [3 /*break*/, 2];
-                    case 13: return [2 /*return*/];
+                        yield tslib.__await(AvroParser.readLong(this._dataStream, { abortSignal: options.abortSignal }));
+                    }
                 }
-            });
+                yield yield tslib.__await(result);
+            }
         });
-    };
-    return AvroReader;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
-var AvroReadable = /** @class */ (function () {
-    function AvroReadable() {
-    }
-    return AvroReadable;
-}());
+class AvroReadable {
+}
 
 // Copyright (c) Microsoft Corporation.
-var ABORT_ERROR = new abortController.AbortError("Reading from the avro stream was aborted.");
-var AvroReadableFromStream = /** @class */ (function (_super) {
-    tslib.__extends(AvroReadableFromStream, _super);
-    function AvroReadableFromStream(readable) {
-        var _this = _super.call(this) || this;
-        _this._readable = readable;
-        _this._position = 0;
-        return _this;
+const ABORT_ERROR = new abortController.AbortError("Reading from the avro stream was aborted.");
+class AvroReadableFromStream extends AvroReadable {
+    constructor(readable) {
+        super();
+        this._readable = readable;
+        this._position = 0;
     }
-    AvroReadableFromStream.prototype.toUint8Array = function (data) {
+    toUint8Array(data) {
         if (typeof data === "string") {
             return Buffer.from(data);
         }
         return data;
-    };
-    Object.defineProperty(AvroReadableFromStream.prototype, "position", {
-        get: function () {
-            return this._position;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    AvroReadableFromStream.prototype.read = function (size, options) {
+    }
+    get position() {
+        return this._position;
+    }
+    async read(size, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var chunk;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
-                    throw ABORT_ERROR;
-                }
-                if (size < 0) {
-                    throw new Error("size parameter should be positive: " + size);
-                }
-                if (size === 0) {
-                    return [2 /*return*/, new Uint8Array()];
-                }
-                if (!this._readable.readable) {
-                    throw new Error("Stream no longer readable.");
-                }
-                chunk = this._readable.read(size);
-                if (chunk) {
-                    this._position += chunk.length;
-                    // chunk.length maybe less than desired size if the stream ends.
-                    return [2 /*return*/, this.toUint8Array(chunk)];
-                }
-                else {
-                    // register callback to wait for enough data to read
-                    return [2 /*return*/, new Promise(function (resolve, reject) {
-                            var cleanUp = function () {
-                                _this._readable.removeListener("readable", readableCallback);
-                                _this._readable.removeListener("error", rejectCallback);
-                                _this._readable.removeListener("end", rejectCallback);
-                                _this._readable.removeListener("close", rejectCallback);
-                                if (options.abortSignal) {
-                                    options.abortSignal.removeEventListener("abort", abortHandler);
-                                }
-                            };
-                            var readableCallback = function () {
-                                var chunk = _this._readable.read(size);
-                                if (chunk) {
-                                    _this._position += chunk.length;
-                                    cleanUp();
-                                    // chunk.length maybe less than desired size if the stream ends.
-                                    resolve(_this.toUint8Array(chunk));
-                                }
-                            };
-                            var rejectCallback = function () {
-                                cleanUp();
-                                reject();
-                            };
-                            var abortHandler = function () {
-                                cleanUp();
-                                reject(ABORT_ERROR);
-                            };
-                            _this._readable.on("readable", readableCallback);
-                            _this._readable.once("error", rejectCallback);
-                            _this._readable.once("end", rejectCallback);
-                            _this._readable.once("close", rejectCallback);
-                            if (options.abortSignal) {
-                                options.abortSignal.addEventListener("abort", abortHandler);
-                            }
-                        })];
+        if ((_a = options.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {
+            throw ABORT_ERROR;
+        }
+        if (size < 0) {
+            throw new Error(`size parameter should be positive: ${size}`);
+        }
+        if (size === 0) {
+            return new Uint8Array();
+        }
+        if (!this._readable.readable) {
+            throw new Error("Stream no longer readable.");
+        }
+        // See if there is already enough data.
+        const chunk = this._readable.read(size);
+        if (chunk) {
+            this._position += chunk.length;
+            // chunk.length maybe less than desired size if the stream ends.
+            return this.toUint8Array(chunk);
+        }
+        else {
+            // register callback to wait for enough data to read
+            return new Promise((resolve, reject) => {
+                const cleanUp = () => {
+                    this._readable.removeListener("readable", readableCallback);
+                    this._readable.removeListener("error", rejectCallback);
+                    this._readable.removeListener("end", rejectCallback);
+                    this._readable.removeListener("close", rejectCallback);
+                    if (options.abortSignal) {
+                        options.abortSignal.removeEventListener("abort", abortHandler);
+                    }
+                };
+                const readableCallback = () => {
+                    const chunk = this._readable.read(size);
+                    if (chunk) {
+                        this._position += chunk.length;
+                        cleanUp();
+                        // chunk.length maybe less than desired size if the stream ends.
+                        resolve(this.toUint8Array(chunk));
+                    }
+                };
+                const rejectCallback = () => {
+                    cleanUp();
+                    reject();
+                };
+                const abortHandler = () => {
+                    cleanUp();
+                    reject(ABORT_ERROR);
+                };
+                this._readable.on("readable", readableCallback);
+                this._readable.once("error", rejectCallback);
+                this._readable.once("end", rejectCallback);
+                this._readable.once("close", rejectCallback);
+                if (options.abortSignal) {
+                    options.abortSignal.addEventListener("abort", abortHandler);
                 }
             });
-        });
-    };
-    return AvroReadableFromStream;
-}(AvroReadable));
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -81755,121 +79834,103 @@ var AvroReadableFromStream = /** @class */ (function (_super) {
  *
  * A Node.js BlobQuickQueryStream will internally parse avro data stream for blob query.
  */
-var BlobQuickQueryStream = /** @class */ (function (_super) {
-    tslib.__extends(BlobQuickQueryStream, _super);
+class BlobQuickQueryStream extends stream.Readable {
     /**
      * Creates an instance of BlobQuickQueryStream.
      *
      * @param source - The current ReadableStream returned from getter
      * @param options -
      */
-    function BlobQuickQueryStream(source, options) {
-        if (options === void 0) { options = {}; }
-        var _this = _super.call(this) || this;
-        _this.avroPaused = true;
-        _this.source = source;
-        _this.onProgress = options.onProgress;
-        _this.onError = options.onError;
-        _this.avroReader = new AvroReader(new AvroReadableFromStream(_this.source));
-        _this.avroIter = _this.avroReader.parseObjects({ abortSignal: options.abortSignal });
-        return _this;
+    constructor(source, options = {}) {
+        super();
+        this.avroPaused = true;
+        this.source = source;
+        this.onProgress = options.onProgress;
+        this.onError = options.onError;
+        this.avroReader = new AvroReader(new AvroReadableFromStream(this.source));
+        this.avroIter = this.avroReader.parseObjects({ abortSignal: options.abortSignal });
     }
-    BlobQuickQueryStream.prototype._read = function () {
-        var _this = this;
+    _read() {
         if (this.avroPaused) {
-            this.readInternal().catch(function (err) {
-                _this.emit("error", err);
+            this.readInternal().catch((err) => {
+                this.emit("error", err);
             });
         }
-    };
-    BlobQuickQueryStream.prototype.readInternal = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var avroNext, obj, schema, data, bytesScanned, totalBytes, fatal, name_1, description, position;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        this.avroPaused = false;
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, this.avroIter.next()];
-                    case 2:
-                        avroNext = _a.sent();
-                        if (avroNext.done) {
-                            return [3 /*break*/, 4];
+    }
+    async readInternal() {
+        this.avroPaused = false;
+        let avroNext;
+        do {
+            avroNext = await this.avroIter.next();
+            if (avroNext.done) {
+                break;
+            }
+            const obj = avroNext.value;
+            const schema = obj.$schema;
+            if (typeof schema !== "string") {
+                throw Error("Missing schema in avro record.");
+            }
+            switch (schema) {
+                case "com.microsoft.azure.storage.queryBlobContents.resultData":
+                    const data = obj.data;
+                    if (data instanceof Uint8Array === false) {
+                        throw Error("Invalid data in avro result record.");
+                    }
+                    if (!this.push(Buffer.from(data))) {
+                        this.avroPaused = true;
+                    }
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.progress":
+                    const bytesScanned = obj.bytesScanned;
+                    if (typeof bytesScanned !== "number") {
+                        throw Error("Invalid bytesScanned in avro progress record.");
+                    }
+                    if (this.onProgress) {
+                        this.onProgress({ loadedBytes: bytesScanned });
+                    }
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.end":
+                    if (this.onProgress) {
+                        const totalBytes = obj.totalBytes;
+                        if (typeof totalBytes !== "number") {
+                            throw Error("Invalid totalBytes in avro end record.");
                         }
-                        obj = avroNext.value;
-                        schema = obj.$schema;
-                        if (typeof schema !== "string") {
-                            throw Error("Missing schema in avro record.");
+                        this.onProgress({ loadedBytes: totalBytes });
+                    }
+                    this.push(null);
+                    break;
+                case "com.microsoft.azure.storage.queryBlobContents.error":
+                    if (this.onError) {
+                        const fatal = obj.fatal;
+                        if (typeof fatal !== "boolean") {
+                            throw Error("Invalid fatal in avro error record.");
                         }
-                        switch (schema) {
-                            case "com.microsoft.azure.storage.queryBlobContents.resultData":
-                                data = obj.data;
-                                if (data instanceof Uint8Array === false) {
-                                    throw Error("Invalid data in avro result record.");
-                                }
-                                if (!this.push(Buffer.from(data))) {
-                                    this.avroPaused = true;
-                                }
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.progress":
-                                bytesScanned = obj.bytesScanned;
-                                if (typeof bytesScanned !== "number") {
-                                    throw Error("Invalid bytesScanned in avro progress record.");
-                                }
-                                if (this.onProgress) {
-                                    this.onProgress({ loadedBytes: bytesScanned });
-                                }
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.end":
-                                if (this.onProgress) {
-                                    totalBytes = obj.totalBytes;
-                                    if (typeof totalBytes !== "number") {
-                                        throw Error("Invalid totalBytes in avro end record.");
-                                    }
-                                    this.onProgress({ loadedBytes: totalBytes });
-                                }
-                                this.push(null);
-                                break;
-                            case "com.microsoft.azure.storage.queryBlobContents.error":
-                                if (this.onError) {
-                                    fatal = obj.fatal;
-                                    if (typeof fatal !== "boolean") {
-                                        throw Error("Invalid fatal in avro error record.");
-                                    }
-                                    name_1 = obj.name;
-                                    if (typeof name_1 !== "string") {
-                                        throw Error("Invalid name in avro error record.");
-                                    }
-                                    description = obj.description;
-                                    if (typeof description !== "string") {
-                                        throw Error("Invalid description in avro error record.");
-                                    }
-                                    position = obj.position;
-                                    if (typeof position !== "number") {
-                                        throw Error("Invalid position in avro error record.");
-                                    }
-                                    this.onError({
-                                        position: position,
-                                        name: name_1,
-                                        isFatal: fatal,
-                                        description: description
-                                    });
-                                }
-                                break;
-                            default:
-                                throw Error("Unknown schema " + schema + " in avro progress record.");
+                        const name = obj.name;
+                        if (typeof name !== "string") {
+                            throw Error("Invalid name in avro error record.");
                         }
-                        _a.label = 3;
-                    case 3:
-                        if (!avroNext.done && !this.avroPaused) return [3 /*break*/, 1];
-                        _a.label = 4;
-                    case 4: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    return BlobQuickQueryStream;
-}(stream.Readable));
+                        const description = obj.description;
+                        if (typeof description !== "string") {
+                            throw Error("Invalid description in avro error record.");
+                        }
+                        const position = obj.position;
+                        if (typeof position !== "number") {
+                            throw Error("Invalid position in avro error record.");
+                        }
+                        this.onError({
+                            position,
+                            name,
+                            isFatal: fatal,
+                            description
+                        });
+                    }
+                    break;
+                default:
+                    throw Error(`Unknown schema ${schema} in avro progress record.`);
+            }
+        } while (!avroNext.done && !this.avroPaused);
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -81878,508 +79939,362 @@ var BlobQuickQueryStream = /** @class */ (function (_super) {
  * BlobQueryResponse implements BlobDownloadResponseModel interface, and in Node.js runtime it will
  * parse avor data returned by blob query.
  */
-var BlobQueryResponse = /** @class */ (function () {
+class BlobQueryResponse {
     /**
      * Creates an instance of BlobQueryResponse.
      *
      * @param originalResponse -
      * @param options -
      */
-    function BlobQueryResponse(originalResponse, options) {
-        if (options === void 0) { options = {}; }
+    constructor(originalResponse, options = {}) {
         this.originalResponse = originalResponse;
         this.blobDownloadStream = new BlobQuickQueryStream(this.originalResponse.readableStreamBody, options);
     }
-    Object.defineProperty(BlobQueryResponse.prototype, "acceptRanges", {
-        /**
-         * Indicates that the service supports
-         * requests for partial file content.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.acceptRanges;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "cacheControl", {
-        /**
-         * Returns if it was previously specified
-         * for the file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.cacheControl;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentDisposition", {
-        /**
-         * Returns the value that was specified
-         * for the 'x-ms-content-disposition' header and specifies how to process the
-         * response.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentDisposition;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentEncoding", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Encoding request header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentEncoding;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentLanguage", {
-        /**
-         * Returns the value that was specified
-         * for the Content-Language request header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentLanguage;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobSequenceNumber", {
-        /**
-         * The current sequence number for a
-         * page blob. This header is not returned for block blobs or append blobs.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobSequenceNumber;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobType", {
-        /**
-         * The blob's type. Possible values include:
-         * 'BlockBlob', 'PageBlob', 'AppendBlob'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentLength", {
-        /**
-         * The number of bytes present in the
-         * response body.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentLength;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentMD5", {
-        /**
-         * If the file has an MD5 hash and the
-         * request is to read the full file, this response header is returned so that
-         * the client can check for message content integrity. If the request is to
-         * read a specified range and the 'x-ms-range-get-content-md5' is set to
-         * true, then the request returns an MD5 hash for the range, as long as the
-         * range size is less than or equal to 4 MB. If neither of these sets of
-         * conditions is true, then no value is returned for the 'Content-MD5'
-         * header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentRange", {
-        /**
-         * Indicates the range of bytes returned if
-         * the client requested a subset of the file by setting the Range request
-         * header.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentRange;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentType", {
-        /**
-         * The content type specified for the file.
-         * The default content type is 'application/octet-stream'
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.contentType;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyCompletedOn", {
-        /**
-         * Conclusion time of the last attempted
-         * Copy File operation where this file was the destination file. This value
-         * can specify the time of a completed, aborted, or failed copy attempt.
-         *
-         * @readonly
-         */
-        get: function () {
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyId", {
-        /**
-         * String identifier for the last attempted Copy
-         * File operation where this file was the destination file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyProgress", {
-        /**
-         * Contains the number of bytes copied and
-         * the total bytes in the source in the last attempted Copy File operation
-         * where this file was the destination file. Can show between 0 and
-         * Content-Length bytes copied.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyProgress;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copySource", {
-        /**
-         * URL up to 2KB in length that specifies the
-         * source file used in the last attempted Copy File operation where this file
-         * was the destination file.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copySource;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyStatus", {
-        /**
-         * State of the copy operation
-         * identified by 'x-ms-copy-id'. Possible values include: 'pending',
-         * 'success', 'aborted', 'failed'
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "copyStatusDescription", {
-        /**
-         * Only appears when
-         * x-ms-copy-status is failed or pending. Describes cause of fatal or
-         * non-fatal copy operation failure.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.copyStatusDescription;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseDuration", {
-        /**
-         * When a blob is leased,
-         * specifies whether the lease is of infinite or fixed duration. Possible
-         * values include: 'infinite', 'fixed'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseDuration;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseState", {
-        /**
-         * Lease state of the blob. Possible
-         * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseState;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "leaseStatus", {
-        /**
-         * The current lease status of the
-         * blob. Possible values include: 'locked', 'unlocked'.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.leaseStatus;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "date", {
-        /**
-         * A UTC date/time value generated by the service that
-         * indicates the time at which the response was initiated.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.date;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobCommittedBlockCount", {
-        /**
-         * The number of committed blocks
-         * present in the blob. This header is returned only for append blobs.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobCommittedBlockCount;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "etag", {
-        /**
-         * The ETag contains a value that you can use to
-         * perform operations conditionally, in quotes.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.etag;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "errorCode", {
-        /**
-         * The error code.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.errorCode;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "isServerEncrypted", {
-        /**
-         * The value of this header is set to
-         * true if the file data and application metadata are completely encrypted
-         * using the specified algorithm. Otherwise, the value is set to false (when
-         * the file is unencrypted, or if only parts of the file/application metadata
-         * are encrypted).
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.isServerEncrypted;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobContentMD5", {
-        /**
-         * If the blob has a MD5 hash, and if
-         * request contains range header (Range or x-ms-range), this response header
-         * is returned with the value of the whole blob's MD5 value. This value may
-         * or may not be equal to the value returned in Content-MD5 header, with the
-         * latter calculated from the requested range.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.blobContentMD5;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "lastModified", {
-        /**
-         * Returns the date and time the file was last
-         * modified. Any operation that modifies the file or its properties updates
-         * the last modified time.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.lastModified;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "metadata", {
-        /**
-         * A name-value pair
-         * to associate with a file storage object.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.metadata;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "requestId", {
-        /**
-         * This header uniquely identifies the request
-         * that was made and can be used for troubleshooting the request.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.requestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "clientRequestId", {
-        /**
-         * If a client request id header is sent in the request, this header will be present in the
-         * response with the same value.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.clientRequestId;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "version", {
-        /**
-         * Indicates the version of the File service used
-         * to execute the request.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.version;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "encryptionKeySha256", {
-        /**
-         * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
-         * when the blob was encrypted with a customer-provided key.
-         *
-         * @readonly
-         */
-        get: function () {
-            return this.originalResponse.encryptionKeySha256;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "contentCrc64", {
-        /**
-         * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
-         * true, then the request returns a crc64 for the range, as long as the range size is less than
-         * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
-         * specified in the same request, it will fail with 400(Bad Request)
-         */
-        get: function () {
-            return this.originalResponse.contentCrc64;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "blobBody", {
-        /**
-         * The response body as a browser Blob.
-         * Always undefined in node.js.
-         *
-         * @readonly
-         */
-        get: function () {
-            return undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "readableStreamBody", {
-        /**
-         * The response body as a node.js Readable stream.
-         * Always undefined in the browser.
-         *
-         * It will parse avor data returned by blob query.
-         *
-         * @readonly
-         */
-        get: function () {
-            return coreHttp.isNode ? this.blobDownloadStream : undefined;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobQueryResponse.prototype, "_response", {
-        /**
-         * The HTTP response.
-         */
-        get: function () {
-            return this.originalResponse._response;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    return BlobQueryResponse;
-}());
+    /**
+     * Indicates that the service supports
+     * requests for partial file content.
+     *
+     * @readonly
+     */
+    get acceptRanges() {
+        return this.originalResponse.acceptRanges;
+    }
+    /**
+     * Returns if it was previously specified
+     * for the file.
+     *
+     * @readonly
+     */
+    get cacheControl() {
+        return this.originalResponse.cacheControl;
+    }
+    /**
+     * Returns the value that was specified
+     * for the 'x-ms-content-disposition' header and specifies how to process the
+     * response.
+     *
+     * @readonly
+     */
+    get contentDisposition() {
+        return this.originalResponse.contentDisposition;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Encoding request header.
+     *
+     * @readonly
+     */
+    get contentEncoding() {
+        return this.originalResponse.contentEncoding;
+    }
+    /**
+     * Returns the value that was specified
+     * for the Content-Language request header.
+     *
+     * @readonly
+     */
+    get contentLanguage() {
+        return this.originalResponse.contentLanguage;
+    }
+    /**
+     * The current sequence number for a
+     * page blob. This header is not returned for block blobs or append blobs.
+     *
+     * @readonly
+     */
+    get blobSequenceNumber() {
+        return this.originalResponse.blobSequenceNumber;
+    }
+    /**
+     * The blob's type. Possible values include:
+     * 'BlockBlob', 'PageBlob', 'AppendBlob'.
+     *
+     * @readonly
+     */
+    get blobType() {
+        return this.originalResponse.blobType;
+    }
+    /**
+     * The number of bytes present in the
+     * response body.
+     *
+     * @readonly
+     */
+    get contentLength() {
+        return this.originalResponse.contentLength;
+    }
+    /**
+     * If the file has an MD5 hash and the
+     * request is to read the full file, this response header is returned so that
+     * the client can check for message content integrity. If the request is to
+     * read a specified range and the 'x-ms-range-get-content-md5' is set to
+     * true, then the request returns an MD5 hash for the range, as long as the
+     * range size is less than or equal to 4 MB. If neither of these sets of
+     * conditions is true, then no value is returned for the 'Content-MD5'
+     * header.
+     *
+     * @readonly
+     */
+    get contentMD5() {
+        return this.originalResponse.contentMD5;
+    }
+    /**
+     * Indicates the range of bytes returned if
+     * the client requested a subset of the file by setting the Range request
+     * header.
+     *
+     * @readonly
+     */
+    get contentRange() {
+        return this.originalResponse.contentRange;
+    }
+    /**
+     * The content type specified for the file.
+     * The default content type is 'application/octet-stream'
+     *
+     * @readonly
+     */
+    get contentType() {
+        return this.originalResponse.contentType;
+    }
+    /**
+     * Conclusion time of the last attempted
+     * Copy File operation where this file was the destination file. This value
+     * can specify the time of a completed, aborted, or failed copy attempt.
+     *
+     * @readonly
+     */
+    get copyCompletedOn() {
+        return undefined;
+    }
+    /**
+     * String identifier for the last attempted Copy
+     * File operation where this file was the destination file.
+     *
+     * @readonly
+     */
+    get copyId() {
+        return this.originalResponse.copyId;
+    }
+    /**
+     * Contains the number of bytes copied and
+     * the total bytes in the source in the last attempted Copy File operation
+     * where this file was the destination file. Can show between 0 and
+     * Content-Length bytes copied.
+     *
+     * @readonly
+     */
+    get copyProgress() {
+        return this.originalResponse.copyProgress;
+    }
+    /**
+     * URL up to 2KB in length that specifies the
+     * source file used in the last attempted Copy File operation where this file
+     * was the destination file.
+     *
+     * @readonly
+     */
+    get copySource() {
+        return this.originalResponse.copySource;
+    }
+    /**
+     * State of the copy operation
+     * identified by 'x-ms-copy-id'. Possible values include: 'pending',
+     * 'success', 'aborted', 'failed'
+     *
+     * @readonly
+     */
+    get copyStatus() {
+        return this.originalResponse.copyStatus;
+    }
+    /**
+     * Only appears when
+     * x-ms-copy-status is failed or pending. Describes cause of fatal or
+     * non-fatal copy operation failure.
+     *
+     * @readonly
+     */
+    get copyStatusDescription() {
+        return this.originalResponse.copyStatusDescription;
+    }
+    /**
+     * When a blob is leased,
+     * specifies whether the lease is of infinite or fixed duration. Possible
+     * values include: 'infinite', 'fixed'.
+     *
+     * @readonly
+     */
+    get leaseDuration() {
+        return this.originalResponse.leaseDuration;
+    }
+    /**
+     * Lease state of the blob. Possible
+     * values include: 'available', 'leased', 'expired', 'breaking', 'broken'.
+     *
+     * @readonly
+     */
+    get leaseState() {
+        return this.originalResponse.leaseState;
+    }
+    /**
+     * The current lease status of the
+     * blob. Possible values include: 'locked', 'unlocked'.
+     *
+     * @readonly
+     */
+    get leaseStatus() {
+        return this.originalResponse.leaseStatus;
+    }
+    /**
+     * A UTC date/time value generated by the service that
+     * indicates the time at which the response was initiated.
+     *
+     * @readonly
+     */
+    get date() {
+        return this.originalResponse.date;
+    }
+    /**
+     * The number of committed blocks
+     * present in the blob. This header is returned only for append blobs.
+     *
+     * @readonly
+     */
+    get blobCommittedBlockCount() {
+        return this.originalResponse.blobCommittedBlockCount;
+    }
+    /**
+     * The ETag contains a value that you can use to
+     * perform operations conditionally, in quotes.
+     *
+     * @readonly
+     */
+    get etag() {
+        return this.originalResponse.etag;
+    }
+    /**
+     * The error code.
+     *
+     * @readonly
+     */
+    get errorCode() {
+        return this.originalResponse.errorCode;
+    }
+    /**
+     * The value of this header is set to
+     * true if the file data and application metadata are completely encrypted
+     * using the specified algorithm. Otherwise, the value is set to false (when
+     * the file is unencrypted, or if only parts of the file/application metadata
+     * are encrypted).
+     *
+     * @readonly
+     */
+    get isServerEncrypted() {
+        return this.originalResponse.isServerEncrypted;
+    }
+    /**
+     * If the blob has a MD5 hash, and if
+     * request contains range header (Range or x-ms-range), this response header
+     * is returned with the value of the whole blob's MD5 value. This value may
+     * or may not be equal to the value returned in Content-MD5 header, with the
+     * latter calculated from the requested range.
+     *
+     * @readonly
+     */
+    get blobContentMD5() {
+        return this.originalResponse.blobContentMD5;
+    }
+    /**
+     * Returns the date and time the file was last
+     * modified. Any operation that modifies the file or its properties updates
+     * the last modified time.
+     *
+     * @readonly
+     */
+    get lastModified() {
+        return this.originalResponse.lastModified;
+    }
+    /**
+     * A name-value pair
+     * to associate with a file storage object.
+     *
+     * @readonly
+     */
+    get metadata() {
+        return this.originalResponse.metadata;
+    }
+    /**
+     * This header uniquely identifies the request
+     * that was made and can be used for troubleshooting the request.
+     *
+     * @readonly
+     */
+    get requestId() {
+        return this.originalResponse.requestId;
+    }
+    /**
+     * If a client request id header is sent in the request, this header will be present in the
+     * response with the same value.
+     *
+     * @readonly
+     */
+    get clientRequestId() {
+        return this.originalResponse.clientRequestId;
+    }
+    /**
+     * Indicates the version of the File service used
+     * to execute the request.
+     *
+     * @readonly
+     */
+    get version() {
+        return this.originalResponse.version;
+    }
+    /**
+     * The SHA-256 hash of the encryption key used to encrypt the blob. This value is only returned
+     * when the blob was encrypted with a customer-provided key.
+     *
+     * @readonly
+     */
+    get encryptionKeySha256() {
+        return this.originalResponse.encryptionKeySha256;
+    }
+    /**
+     * If the request is to read a specified range and the x-ms-range-get-content-crc64 is set to
+     * true, then the request returns a crc64 for the range, as long as the range size is less than
+     * or equal to 4 MB. If both x-ms-range-get-content-crc64 & x-ms-range-get-content-md5 is
+     * specified in the same request, it will fail with 400(Bad Request)
+     */
+    get contentCrc64() {
+        return this.originalResponse.contentCrc64;
+    }
+    /**
+     * The response body as a browser Blob.
+     * Always undefined in node.js.
+     *
+     * @readonly
+     */
+    get blobBody() {
+        return undefined;
+    }
+    /**
+     * The response body as a node.js Readable stream.
+     * Always undefined in the browser.
+     *
+     * It will parse avor data returned by blob query.
+     *
+     * @readonly
+     */
+    get readableStreamBody() {
+        return coreHttp.isNode ? this.blobDownloadStream : undefined;
+    }
+    /**
+     * The HTTP response.
+     */
+    get _response() {
+        return this.originalResponse._response;
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 (function (BlockBlobTier) {
@@ -82459,6 +80374,7 @@ function ensureCpkIfSpecified(cpk, isHttps) {
 }
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 /**
  * Function that converts PageRange and ClearRange to a common Range object.
  * PageRange and ClearRange have start and end while Range offset and count
@@ -82466,18 +80382,18 @@ function ensureCpkIfSpecified(cpk, isHttps) {
  * @param response - Model PageBlob Range response
  */
 function rangeResponseFromModel(response) {
-    var pageRange = (response._response.parsedBody.pageRange || []).map(function (x) { return ({
+    const pageRange = (response._response.parsedBody.pageRange || []).map((x) => ({
         offset: x.start,
         count: x.end - x.start
-    }); });
-    var clearRange = (response._response.parsedBody.clearRange || []).map(function (x) { return ({
+    }));
+    const clearRange = (response._response.parsedBody.clearRange || []).map((x) => ({
         offset: x.start,
         count: x.end - x.start
-    }); });
-    return tslib.__assign(tslib.__assign({}, response), { pageRange: pageRange,
-        clearRange: clearRange, _response: tslib.__assign(tslib.__assign({}, response._response), { parsedBody: {
-                pageRange: pageRange,
-                clearRange: clearRange
+    }));
+    return Object.assign(Object.assign({}, response), { pageRange,
+        clearRange, _response: Object.assign(Object.assign({}, response._response), { parsedBody: {
+                pageRange,
+                clearRange
             } }) });
 }
 
@@ -82488,64 +80404,48 @@ function rangeResponseFromModel(response) {
  *
  * @hidden
  */
-var BlobBeginCopyFromUrlPoller = /** @class */ (function (_super) {
-    tslib.__extends(BlobBeginCopyFromUrlPoller, _super);
-    function BlobBeginCopyFromUrlPoller(options) {
-        var _this = this;
-        var blobClient = options.blobClient, copySource = options.copySource, _a = options.intervalInMs, intervalInMs = _a === void 0 ? 15000 : _a, onProgress = options.onProgress, resumeFrom = options.resumeFrom, startCopyFromURLOptions = options.startCopyFromURLOptions;
-        var state;
+class BlobBeginCopyFromUrlPoller extends coreLro.Poller {
+    constructor(options) {
+        const { blobClient, copySource, intervalInMs = 15000, onProgress, resumeFrom, startCopyFromURLOptions } = options;
+        let state;
         if (resumeFrom) {
             state = JSON.parse(resumeFrom).state;
         }
-        var operation = makeBlobBeginCopyFromURLPollOperation(tslib.__assign(tslib.__assign({}, state), { blobClient: blobClient,
-            copySource: copySource,
-            startCopyFromURLOptions: startCopyFromURLOptions }));
-        _this = _super.call(this, operation) || this;
+        const operation = makeBlobBeginCopyFromURLPollOperation(Object.assign(Object.assign({}, state), { blobClient,
+            copySource,
+            startCopyFromURLOptions }));
+        super(operation);
         if (typeof onProgress === "function") {
-            _this.onProgress(onProgress);
+            this.onProgress(onProgress);
         }
-        _this.intervalInMs = intervalInMs;
-        return _this;
+        this.intervalInMs = intervalInMs;
     }
-    BlobBeginCopyFromUrlPoller.prototype.delay = function () {
+    delay() {
         return coreHttp.delay(this.intervalInMs);
-    };
-    return BlobBeginCopyFromUrlPoller;
-}(coreLro.Poller));
+    }
+}
 /**
  * Note: Intentionally using function expression over arrow function expression
  * so that the function can be invoked with a different context.
  * This affects what `this` refers to.
  * @hidden
  */
-var cancel = function cancel(options) {
-    if (options === void 0) { options = {}; }
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var state, copyId;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    state = this.state;
-                    copyId = state.copyId;
-                    if (state.isCompleted) {
-                        return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-                    }
-                    if (!copyId) {
-                        state.isCancelled = true;
-                        return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-                    }
-                    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
-                    return [4 /*yield*/, state.blobClient.abortCopyFromURL(copyId, {
-                            abortSignal: options.abortSignal
-                        })];
-                case 1:
-                    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
-                    _a.sent();
-                    state.isCancelled = true;
-                    return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
-            }
-        });
+const cancel = async function cancel(options = {}) {
+    const state = this.state;
+    const { copyId } = state;
+    if (state.isCompleted) {
+        return makeBlobBeginCopyFromURLPollOperation(state);
+    }
+    if (!copyId) {
+        state.isCancelled = true;
+        return makeBlobBeginCopyFromURLPollOperation(state);
+    }
+    // if abortCopyFromURL throws, it will bubble up to user's poller.cancelOperation call
+    await state.blobClient.abortCopyFromURL(copyId, {
+        abortSignal: options.abortSignal
     });
+    state.isCancelled = true;
+    return makeBlobBeginCopyFromURLPollOperation(state);
 };
 /**
  * Note: Intentionally using function expression over arrow function expression
@@ -82553,64 +80453,48 @@ var cancel = function cancel(options) {
  * This affects what `this` refers to.
  * @hidden
  */
-var update = function update(options) {
-    if (options === void 0) { options = {}; }
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var state, blobClient, copySource, startCopyFromURLOptions, result, result, copyStatus, copyProgress, prevCopyProgress, err_1;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    state = this.state;
-                    blobClient = state.blobClient, copySource = state.copySource, startCopyFromURLOptions = state.startCopyFromURLOptions;
-                    if (!!state.isStarted) return [3 /*break*/, 2];
-                    state.isStarted = true;
-                    return [4 /*yield*/, blobClient.startCopyFromURL(copySource, startCopyFromURLOptions)];
-                case 1:
-                    result = _a.sent();
-                    // copyId is needed to abort
-                    state.copyId = result.copyId;
-                    if (result.copyStatus === "success") {
-                        state.result = result;
-                        state.isCompleted = true;
-                    }
-                    return [3 /*break*/, 6];
-                case 2:
-                    if (!!state.isCompleted) return [3 /*break*/, 6];
-                    _a.label = 3;
-                case 3:
-                    _a.trys.push([3, 5, , 6]);
-                    return [4 /*yield*/, state.blobClient.getProperties({ abortSignal: options.abortSignal })];
-                case 4:
-                    result = _a.sent();
-                    copyStatus = result.copyStatus, copyProgress = result.copyProgress;
-                    prevCopyProgress = state.copyProgress;
-                    if (copyProgress) {
-                        state.copyProgress = copyProgress;
-                    }
-                    if (copyStatus === "pending" &&
-                        copyProgress !== prevCopyProgress &&
-                        typeof options.fireProgress === "function") {
-                        // trigger in setTimeout, or swallow error?
-                        options.fireProgress(state);
-                    }
-                    else if (copyStatus === "success") {
-                        state.result = result;
-                        state.isCompleted = true;
-                    }
-                    else if (copyStatus === "failed") {
-                        state.error = new Error("Blob copy failed with reason: \"" + (result.copyStatusDescription || "unknown") + "\"");
-                        state.isCompleted = true;
-                    }
-                    return [3 /*break*/, 6];
-                case 5:
-                    err_1 = _a.sent();
-                    state.error = err_1;
-                    state.isCompleted = true;
-                    return [3 /*break*/, 6];
-                case 6: return [2 /*return*/, makeBlobBeginCopyFromURLPollOperation(state)];
+const update = async function update(options = {}) {
+    const state = this.state;
+    const { blobClient, copySource, startCopyFromURLOptions } = state;
+    if (!state.isStarted) {
+        state.isStarted = true;
+        const result = await blobClient.startCopyFromURL(copySource, startCopyFromURLOptions);
+        // copyId is needed to abort
+        state.copyId = result.copyId;
+        if (result.copyStatus === "success") {
+            state.result = result;
+            state.isCompleted = true;
+        }
+    }
+    else if (!state.isCompleted) {
+        try {
+            const result = await state.blobClient.getProperties({ abortSignal: options.abortSignal });
+            const { copyStatus, copyProgress } = result;
+            const prevCopyProgress = state.copyProgress;
+            if (copyProgress) {
+                state.copyProgress = copyProgress;
             }
-        });
-    });
+            if (copyStatus === "pending" &&
+                copyProgress !== prevCopyProgress &&
+                typeof options.fireProgress === "function") {
+                // trigger in setTimeout, or swallow error?
+                options.fireProgress(state);
+            }
+            else if (copyStatus === "success") {
+                state.result = result;
+                state.isCompleted = true;
+            }
+            else if (copyStatus === "failed") {
+                state.error = new Error(`Blob copy failed with reason: "${result.copyStatusDescription || "unknown"}"`);
+                state.isCompleted = true;
+            }
+        }
+        catch (err) {
+            state.error = err;
+            state.isCompleted = true;
+        }
+    }
+    return makeBlobBeginCopyFromURLPollOperation(state);
 };
 /**
  * Note: Intentionally using function expression over arrow function expression
@@ -82618,8 +80502,8 @@ var update = function update(options) {
  * This affects what `this` refers to.
  * @hidden
  */
-var toString = function toString() {
-    return JSON.stringify({ state: this.state }, function (key, value) {
+const toString = function toString() {
+    return JSON.stringify({ state: this.state }, (key, value) => {
         // remove blobClient from serialized state since a client can't be hydrated from this info.
         if (key === "blobClient") {
             return undefined;
@@ -82633,10 +80517,10 @@ var toString = function toString() {
  */
 function makeBlobBeginCopyFromURLPollOperation(state) {
     return {
-        state: tslib.__assign({}, state),
-        cancel: cancel,
-        toString: toString,
-        update: update
+        state: Object.assign({}, state),
+        cancel,
+        toString,
+        update
     };
 }
 
@@ -82651,14 +80535,14 @@ function makeBlobBeginCopyFromURLPollOperation(state) {
  */
 function rangeToString(iRange) {
     if (iRange.offset < 0) {
-        throw new RangeError("Range.offset cannot be smaller than 0.");
+        throw new RangeError(`Range.offset cannot be smaller than 0.`);
     }
     if (iRange.count && iRange.count <= 0) {
-        throw new RangeError("Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.");
+        throw new RangeError(`Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.`);
     }
     return iRange.count
-        ? "bytes=" + iRange.offset + "-" + (iRange.offset + iRange.count - 1)
-        : "bytes=" + iRange.offset + "-";
+        ? `bytes=${iRange.offset}-${iRange.offset + iRange.count - 1}`
+        : `bytes=${iRange.offset}-`;
 }
 
 // Copyright (c) Microsoft Corporation.
@@ -82675,13 +80559,12 @@ var BatchStates;
  * Will stop execute left operations when one of the executed operation throws an error.
  * But Batch cannot cancel ongoing operations, you need to cancel them by yourself.
  */
-var Batch = /** @class */ (function () {
+class Batch {
     /**
      * Creates an instance of Batch.
      * @param concurrency -
      */
-    function Batch(concurrency) {
-        if (concurrency === void 0) { concurrency = 5; }
+    constructor(concurrency = 5) {
         /**
          * Number of active operations under execution.
          */
@@ -82714,69 +80597,53 @@ var Batch = /** @class */ (function () {
      *
      * @param operation -
      */
-    Batch.prototype.addOperation = function (operation) {
-        var _this = this;
-        this.operations.push(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-            var error_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        _a.trys.push([0, 2, , 3]);
-                        this.actives++;
-                        return [4 /*yield*/, operation()];
-                    case 1:
-                        _a.sent();
-                        this.actives--;
-                        this.completed++;
-                        this.parallelExecute();
-                        return [3 /*break*/, 3];
-                    case 2:
-                        error_1 = _a.sent();
-                        this.emitter.emit("error", error_1);
-                        return [3 /*break*/, 3];
-                    case 3: return [2 /*return*/];
-                }
-            });
-        }); });
-    };
+    addOperation(operation) {
+        this.operations.push(async () => {
+            try {
+                this.actives++;
+                await operation();
+                this.actives--;
+                this.completed++;
+                this.parallelExecute();
+            }
+            catch (error) {
+                this.emitter.emit("error", error);
+            }
+        });
+    }
     /**
      * Start execute operations in the queue.
      *
      */
-    Batch.prototype.do = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                if (this.operations.length === 0) {
-                    return [2 /*return*/, Promise.resolve()];
-                }
-                this.parallelExecute();
-                return [2 /*return*/, new Promise(function (resolve, reject) {
-                        _this.emitter.on("finish", resolve);
-                        _this.emitter.on("error", function (error) {
-                            _this.state = BatchStates.Error;
-                            reject(error);
-                        });
-                    })];
+    async do() {
+        if (this.operations.length === 0) {
+            return Promise.resolve();
+        }
+        this.parallelExecute();
+        return new Promise((resolve, reject) => {
+            this.emitter.on("finish", resolve);
+            this.emitter.on("error", (error) => {
+                this.state = BatchStates.Error;
+                reject(error);
             });
         });
-    };
+    }
     /**
      * Get next operation to be executed. Return null when reaching ends.
      *
      */
-    Batch.prototype.nextOperation = function () {
+    nextOperation() {
         if (this.offset < this.operations.length) {
             return this.operations[this.offset++];
         }
         return null;
-    };
+    }
     /**
      * Start execute operations. One one the most important difference between
      * this method with do() is that do() wraps as an sync method.
      *
      */
-    Batch.prototype.parallelExecute = function () {
+    parallelExecute() {
         if (this.state === BatchStates.Error) {
             return;
         }
@@ -82785,7 +80652,7 @@ var Batch = /** @class */ (function () {
             return;
         }
         while (this.actives < this.concurrency) {
-            var operation = this.nextOperation();
+            const operation = this.nextOperation();
             if (operation) {
                 operation();
             }
@@ -82793,16 +80660,14 @@ var Batch = /** @class */ (function () {
                 return;
             }
         }
-    };
-    return Batch;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * This class generates a readable stream from the data in an array of buffers.
  */
-var BuffersStream = /** @class */ (function (_super) {
-    tslib.__extends(BuffersStream, _super);
+class BuffersStream extends stream.Readable {
     /**
      * Creates an instance of BuffersStream that will emit the data
      * contained in the array of buffers.
@@ -82810,46 +80675,44 @@ var BuffersStream = /** @class */ (function (_super) {
      * @param buffers - Array of buffers containing the data
      * @param byteLength - The total length of data contained in the buffers
      */
-    function BuffersStream(buffers, byteLength, options) {
-        var _this = _super.call(this, options) || this;
-        _this.buffers = buffers;
-        _this.byteLength = byteLength;
-        _this.byteOffsetInCurrentBuffer = 0;
-        _this.bufferIndex = 0;
-        _this.pushedBytesLength = 0;
+    constructor(buffers, byteLength, options) {
+        super(options);
+        this.buffers = buffers;
+        this.byteLength = byteLength;
+        this.byteOffsetInCurrentBuffer = 0;
+        this.bufferIndex = 0;
+        this.pushedBytesLength = 0;
         // check byteLength is no larger than buffers[] total length
-        var buffersLength = 0;
-        for (var _i = 0, _a = _this.buffers; _i < _a.length; _i++) {
-            var buf = _a[_i];
+        let buffersLength = 0;
+        for (const buf of this.buffers) {
             buffersLength += buf.byteLength;
         }
-        if (buffersLength < _this.byteLength) {
+        if (buffersLength < this.byteLength) {
             throw new Error("Data size shouldn't be larger than the total length of buffers.");
         }
-        return _this;
     }
     /**
      * Internal _read() that will be called when the stream wants to pull more data in.
      *
      * @param size - Optional. The size of data to be read
      */
-    BuffersStream.prototype._read = function (size) {
+    _read(size) {
         if (this.pushedBytesLength >= this.byteLength) {
             this.push(null);
         }
         if (!size) {
             size = this.readableHighWaterMark;
         }
-        var outBuffers = [];
-        var i = 0;
+        const outBuffers = [];
+        let i = 0;
         while (i < size && this.pushedBytesLength < this.byteLength) {
             // The last buffer may be longer than the data it contains.
-            var remainingDataInAllBuffers = this.byteLength - this.pushedBytesLength;
-            var remainingCapacityInThisBuffer = this.buffers[this.bufferIndex].byteLength - this.byteOffsetInCurrentBuffer;
-            var remaining = Math.min(remainingCapacityInThisBuffer, remainingDataInAllBuffers);
+            const remainingDataInAllBuffers = this.byteLength - this.pushedBytesLength;
+            const remainingCapacityInThisBuffer = this.buffers[this.bufferIndex].byteLength - this.byteOffsetInCurrentBuffer;
+            const remaining = Math.min(remainingCapacityInThisBuffer, remainingDataInAllBuffers);
             if (remaining > size - i) {
                 // chunkSize = size - i
-                var end = this.byteOffsetInCurrentBuffer + size - i;
+                const end = this.byteOffsetInCurrentBuffer + size - i;
                 outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
                 this.pushedBytesLength += size - i;
                 this.byteOffsetInCurrentBuffer = end;
@@ -82858,7 +80721,7 @@ var BuffersStream = /** @class */ (function (_super) {
             }
             else {
                 // chunkSize = remaining
-                var end = this.byteOffsetInCurrentBuffer + remaining;
+                const end = this.byteOffsetInCurrentBuffer + remaining;
                 outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer, end));
                 if (remaining === remainingCapacityInThisBuffer) {
                     // this.buffers[this.bufferIndex] used up, shift to next one
@@ -82878,16 +80741,15 @@ var BuffersStream = /** @class */ (function (_super) {
         else if (outBuffers.length === 1) {
             this.push(outBuffers[0]);
         }
-    };
-    return BuffersStream;
-}(stream.Readable));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
  * maxBufferLength is max size of each buffer in the pooled buffers.
  */
 // Can't use import as Typescript doesn't recognize "buffer".
-var maxBufferLength = __webpack_require__(407).constants.MAX_LENGTH;
+const maxBufferLength = __webpack_require__(407).constants.MAX_LENGTH;
 /**
  * This class provides a buffer container which conceptually has no hard size limit.
  * It accepts a capacity, an array of input buffers and the total length of input data.
@@ -82896,8 +80758,8 @@ var maxBufferLength = __webpack_require__(407).constants.MAX_LENGTH;
  * Then by calling PooledBuffer.getReadableStream(), you can get a readable stream
  * assembled from all the data in the internal "buffer".
  */
-var PooledBuffer = /** @class */ (function () {
-    function PooledBuffer(capacity, buffers, totalLength) {
+class PooledBuffer {
+    constructor(capacity, buffers, totalLength) {
         /**
          * Internal buffers used to keep the data.
          * Each buffer has a length of the maxBufferLength except last one.
@@ -82906,9 +80768,9 @@ var PooledBuffer = /** @class */ (function () {
         this.capacity = capacity;
         this._size = 0;
         // allocate
-        var bufferNum = Math.ceil(capacity / maxBufferLength);
-        for (var i = 0; i < bufferNum; i++) {
-            var len = i === bufferNum - 1 ? capacity % maxBufferLength : maxBufferLength;
+        const bufferNum = Math.ceil(capacity / maxBufferLength);
+        for (let i = 0; i < bufferNum; i++) {
+            let len = i === bufferNum - 1 ? capacity % maxBufferLength : maxBufferLength;
             if (len === 0) {
                 len = maxBufferLength;
             }
@@ -82918,16 +80780,12 @@ var PooledBuffer = /** @class */ (function () {
             this.fill(buffers, totalLength);
         }
     }
-    Object.defineProperty(PooledBuffer.prototype, "size", {
-        /**
-         * The size of the data contained in the pooled buffers.
-         */
-        get: function () {
-            return this._size;
-        },
-        enumerable: false,
-        configurable: true
-    });
+    /**
+     * The size of the data contained in the pooled buffers.
+     */
+    get size() {
+        return this._size;
+    }
     /**
      * Fill the internal buffers with data in the input buffers serially
      * with respect to the total length and the total capacity of the internal buffers.
@@ -82937,13 +80795,13 @@ var PooledBuffer = /** @class */ (function () {
      * @param totalLength - Total length of the data to be filled in.
      *
      */
-    PooledBuffer.prototype.fill = function (buffers, totalLength) {
+    fill(buffers, totalLength) {
         this._size = Math.min(this.capacity, totalLength);
-        var i = 0, j = 0, targetOffset = 0, sourceOffset = 0, totalCopiedNum = 0;
+        let i = 0, j = 0, targetOffset = 0, sourceOffset = 0, totalCopiedNum = 0;
         while (totalCopiedNum < this._size) {
-            var source = buffers[i];
-            var target = this.buffers[j];
-            var copiedNum = source.copy(target, targetOffset, sourceOffset);
+            const source = buffers[i];
+            const target = this.buffers[j];
+            const copiedNum = source.copy(target, targetOffset, sourceOffset);
             totalCopiedNum += copiedNum;
             sourceOffset += copiedNum;
             targetOffset += copiedNum;
@@ -82961,16 +80819,15 @@ var PooledBuffer = /** @class */ (function () {
         if (buffers.length > 0) {
             buffers[0] = buffers[0].slice(sourceOffset);
         }
-    };
+    }
     /**
      * Get the readable stream assembled from all the data in the internal buffers.
      *
      */
-    PooledBuffer.prototype.getReadableStream = function () {
+    getReadableStream() {
         return new BuffersStream(this.buffers, this.size);
-    };
-    return PooledBuffer;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -82995,7 +80852,7 @@ var PooledBuffer = /** @class */ (function () {
  *    in this situation, outgoing handlers are blocked.
  *    Outgoing queue shouldn't be empty.
  */
-var BufferScheduler = /** @class */ (function () {
+class BufferScheduler {
     /**
      * Creates an instance of BufferScheduler.
      *
@@ -83008,7 +80865,7 @@ var BufferScheduler = /** @class */ (function () {
      * @param concurrency - Concurrency of executing outgoingHandlers (>0)
      * @param encoding - [Optional] Encoding of Readable stream when it's a string stream
      */
-    function BufferScheduler(readable, bufferSize, maxBuffers, outgoingHandler, concurrency, encoding) {
+    constructor(readable, bufferSize, maxBuffers, outgoingHandler, concurrency, encoding) {
         /**
          * An internal event emitter.
          */
@@ -83054,13 +80911,13 @@ var BufferScheduler = /** @class */ (function () {
          */
         this.outgoing = [];
         if (bufferSize <= 0) {
-            throw new RangeError("bufferSize must be larger than 0, current is " + bufferSize);
+            throw new RangeError(`bufferSize must be larger than 0, current is ${bufferSize}`);
         }
         if (maxBuffers <= 0) {
-            throw new RangeError("maxBuffers must be larger than 0, current is " + maxBuffers);
+            throw new RangeError(`maxBuffers must be larger than 0, current is ${maxBuffers}`);
         }
         if (concurrency <= 0) {
-            throw new RangeError("concurrency must be larger than 0, current is " + concurrency);
+            throw new RangeError(`concurrency must be larger than 0, current is ${concurrency}`);
         }
         this.bufferSize = bufferSize;
         this.maxBuffers = maxBuffers;
@@ -83074,69 +80931,64 @@ var BufferScheduler = /** @class */ (function () {
      * returns error.
      *
      */
-    BufferScheduler.prototype.do = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve, reject) {
-                        _this.readable.on("data", function (data) {
-                            data = typeof data === "string" ? Buffer.from(data, _this.encoding) : data;
-                            _this.appendUnresolvedData(data);
-                            if (!_this.resolveData()) {
-                                _this.readable.pause();
-                            }
-                        });
-                        _this.readable.on("error", function (err) {
-                            _this.emitter.emit("error", err);
-                        });
-                        _this.readable.on("end", function () {
-                            _this.isStreamEnd = true;
-                            _this.emitter.emit("checkEnd");
-                        });
-                        _this.emitter.on("error", function (err) {
-                            _this.isError = true;
-                            _this.readable.pause();
-                            reject(err);
-                        });
-                        _this.emitter.on("checkEnd", function () {
-                            if (_this.outgoing.length > 0) {
-                                _this.triggerOutgoingHandlers();
-                                return;
-                            }
-                            if (_this.isStreamEnd && _this.executingOutgoingHandlers === 0) {
-                                if (_this.unresolvedLength > 0 && _this.unresolvedLength < _this.bufferSize) {
-                                    var buffer_1 = _this.shiftBufferFromUnresolvedDataArray();
-                                    _this.outgoingHandler(function () { return buffer_1.getReadableStream(); }, buffer_1.size, _this.offset)
-                                        .then(resolve)
-                                        .catch(reject);
-                                }
-                                else if (_this.unresolvedLength >= _this.bufferSize) {
-                                    return;
-                                }
-                                else {
-                                    resolve();
-                                }
-                            }
-                        });
-                    })];
+    async do() {
+        return new Promise((resolve, reject) => {
+            this.readable.on("data", (data) => {
+                data = typeof data === "string" ? Buffer.from(data, this.encoding) : data;
+                this.appendUnresolvedData(data);
+                if (!this.resolveData()) {
+                    this.readable.pause();
+                }
+            });
+            this.readable.on("error", (err) => {
+                this.emitter.emit("error", err);
+            });
+            this.readable.on("end", () => {
+                this.isStreamEnd = true;
+                this.emitter.emit("checkEnd");
+            });
+            this.emitter.on("error", (err) => {
+                this.isError = true;
+                this.readable.pause();
+                reject(err);
+            });
+            this.emitter.on("checkEnd", () => {
+                if (this.outgoing.length > 0) {
+                    this.triggerOutgoingHandlers();
+                    return;
+                }
+                if (this.isStreamEnd && this.executingOutgoingHandlers === 0) {
+                    if (this.unresolvedLength > 0 && this.unresolvedLength < this.bufferSize) {
+                        const buffer = this.shiftBufferFromUnresolvedDataArray();
+                        this.outgoingHandler(() => buffer.getReadableStream(), buffer.size, this.offset)
+                            .then(resolve)
+                            .catch(reject);
+                    }
+                    else if (this.unresolvedLength >= this.bufferSize) {
+                        return;
+                    }
+                    else {
+                        resolve();
+                    }
+                }
             });
         });
-    };
+    }
     /**
      * Insert a new data into unresolved array.
      *
      * @param data -
      */
-    BufferScheduler.prototype.appendUnresolvedData = function (data) {
+    appendUnresolvedData(data) {
         this.unresolvedDataArray.push(data);
         this.unresolvedLength += data.length;
-    };
+    }
     /**
      * Try to shift a buffer with size in blockSize. The buffer returned may be less
      * than blockSize when data in unresolvedDataArray is less than bufferSize.
      *
      */
-    BufferScheduler.prototype.shiftBufferFromUnresolvedDataArray = function (buffer) {
+    shiftBufferFromUnresolvedDataArray(buffer) {
         if (!buffer) {
             buffer = new PooledBuffer(this.bufferSize, this.unresolvedDataArray, this.unresolvedLength);
         }
@@ -83145,7 +80997,7 @@ var BufferScheduler = /** @class */ (function () {
         }
         this.unresolvedLength -= buffer.size;
         return buffer;
-    };
+    }
     /**
      * Resolve data in unresolvedDataArray. For every buffer with size in blockSize
      * shifted, it will try to get (or allocate a buffer) from incoming, and fill it,
@@ -83155,9 +81007,9 @@ var BufferScheduler = /** @class */ (function () {
      *
      * @returns Return false when buffers in incoming are not enough, else true.
      */
-    BufferScheduler.prototype.resolveData = function () {
+    resolveData() {
         while (this.unresolvedLength >= this.bufferSize) {
-            var buffer = void 0;
+            let buffer;
             if (this.incoming.length > 0) {
                 buffer = this.incoming.shift();
                 this.shiftBufferFromUnresolvedDataArray(buffer);
@@ -83176,75 +81028,55 @@ var BufferScheduler = /** @class */ (function () {
             this.triggerOutgoingHandlers();
         }
         return true;
-    };
+    }
     /**
      * Try to trigger a outgoing handler for every buffer in outgoing. Stop when
      * concurrency reaches.
      */
-    BufferScheduler.prototype.triggerOutgoingHandlers = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buffer;
-            return tslib.__generator(this, function (_a) {
-                do {
-                    if (this.executingOutgoingHandlers >= this.concurrency) {
-                        return [2 /*return*/];
-                    }
-                    buffer = this.outgoing.shift();
-                    if (buffer) {
-                        this.triggerOutgoingHandler(buffer);
-                    }
-                } while (buffer);
-                return [2 /*return*/];
-            });
-        });
-    };
+    async triggerOutgoingHandlers() {
+        let buffer;
+        do {
+            if (this.executingOutgoingHandlers >= this.concurrency) {
+                return;
+            }
+            buffer = this.outgoing.shift();
+            if (buffer) {
+                this.triggerOutgoingHandler(buffer);
+            }
+        } while (buffer);
+    }
     /**
      * Trigger a outgoing handler for a buffer shifted from outgoing.
      *
      * @param buffer -
      */
-    BufferScheduler.prototype.triggerOutgoingHandler = function (buffer) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var bufferLength, err_1;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        bufferLength = buffer.size;
-                        this.executingOutgoingHandlers++;
-                        this.offset += bufferLength;
-                        _a.label = 1;
-                    case 1:
-                        _a.trys.push([1, 3, , 4]);
-                        return [4 /*yield*/, this.outgoingHandler(function () { return buffer.getReadableStream(); }, bufferLength, this.offset - bufferLength)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 4];
-                    case 3:
-                        err_1 = _a.sent();
-                        this.emitter.emit("error", err_1);
-                        return [2 /*return*/];
-                    case 4:
-                        this.executingOutgoingHandlers--;
-                        this.reuseBuffer(buffer);
-                        this.emitter.emit("checkEnd");
-                        return [2 /*return*/];
-                }
-            });
-        });
-    };
+    async triggerOutgoingHandler(buffer) {
+        const bufferLength = buffer.size;
+        this.executingOutgoingHandlers++;
+        this.offset += bufferLength;
+        try {
+            await this.outgoingHandler(() => buffer.getReadableStream(), bufferLength, this.offset - bufferLength);
+        }
+        catch (err) {
+            this.emitter.emit("error", err);
+            return;
+        }
+        this.executingOutgoingHandlers--;
+        this.reuseBuffer(buffer);
+        this.emitter.emit("checkEnd");
+    }
     /**
      * Return buffer used by outgoing handler into incoming.
      *
      * @param buffer -
      */
-    BufferScheduler.prototype.reuseBuffer = function (buffer) {
+    reuseBuffer(buffer) {
         this.incoming.push(buffer);
         if (!this.isError && this.resolveData() && !this.isStreamEnd) {
             this.readable.resume();
         }
-    };
-    return BufferScheduler;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -83256,39 +81088,34 @@ var BufferScheduler = /** @class */ (function () {
  * @param end - To which position in the buffer to be filled, exclusive
  * @param encoding - Encoding of the Readable stream
  */
-function streamToBuffer(stream, buffer, offset, end, encoding) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var pos, count;
-        return tslib.__generator(this, function (_a) {
-            pos = 0;
-            count = end - offset;
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    stream.on("readable", function () {
-                        if (pos >= count) {
-                            resolve();
-                            return;
-                        }
-                        var chunk = stream.read();
-                        if (!chunk) {
-                            return;
-                        }
-                        if (typeof chunk === "string") {
-                            chunk = Buffer.from(chunk, encoding);
-                        }
-                        // How much data needed in this chunk
-                        var chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
-                        buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
-                        pos += chunkLength;
-                    });
-                    stream.on("end", function () {
-                        if (pos < count) {
-                            reject(new Error("Stream drains before getting enough data needed. Data read: " + pos + ", data need: " + count));
-                        }
-                        resolve();
-                    });
-                    stream.on("error", reject);
-                })];
+async function streamToBuffer(stream, buffer, offset, end, encoding) {
+    let pos = 0; // Position in stream
+    const count = end - offset; // Total amount of data needed in stream
+    return new Promise((resolve, reject) => {
+        stream.on("readable", () => {
+            if (pos >= count) {
+                resolve();
+                return;
+            }
+            let chunk = stream.read();
+            if (!chunk) {
+                return;
+            }
+            if (typeof chunk === "string") {
+                chunk = Buffer.from(chunk, encoding);
+            }
+            // How much data needed in this chunk
+            const chunkLength = pos + chunk.length > count ? count - pos : chunk.length;
+            buffer.fill(chunk.slice(0, chunkLength), offset + pos, offset + pos + chunkLength);
+            pos += chunkLength;
         });
+        stream.on("end", () => {
+            if (pos < count) {
+                reject(new Error(`Stream drains before getting enough data needed. Data read: ${pos}, data need: ${count}`));
+            }
+            resolve();
+        });
+        stream.on("error", reject);
     });
 }
 /**
@@ -83300,34 +81127,29 @@ function streamToBuffer(stream, buffer, offset, end, encoding) {
  * @returns with the count of bytes read.
  * @throws `RangeError` If buffer size is not big enough.
  */
-function streamToBuffer2(stream, buffer, encoding) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var pos, bufferSize;
-        return tslib.__generator(this, function (_a) {
-            pos = 0;
-            bufferSize = buffer.length;
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    stream.on("readable", function () {
-                        var chunk = stream.read();
-                        if (!chunk) {
-                            return;
-                        }
-                        if (typeof chunk === "string") {
-                            chunk = Buffer.from(chunk, encoding);
-                        }
-                        if (pos + chunk.length > bufferSize) {
-                            reject(new Error("Stream exceeds buffer size. Buffer size: " + bufferSize));
-                            return;
-                        }
-                        buffer.fill(chunk, pos, pos + chunk.length);
-                        pos += chunk.length;
-                    });
-                    stream.on("end", function () {
-                        resolve(pos);
-                    });
-                    stream.on("error", reject);
-                })];
+async function streamToBuffer2(stream, buffer, encoding) {
+    let pos = 0; // Position in stream
+    const bufferSize = buffer.length;
+    return new Promise((resolve, reject) => {
+        stream.on("readable", () => {
+            let chunk = stream.read();
+            if (!chunk) {
+                return;
+            }
+            if (typeof chunk === "string") {
+                chunk = Buffer.from(chunk, encoding);
+            }
+            if (pos + chunk.length > bufferSize) {
+                reject(new Error(`Stream exceeds buffer size. Buffer size: ${bufferSize}`));
+                return;
+            }
+            buffer.fill(chunk, pos, pos + chunk.length);
+            pos += chunk.length;
         });
+        stream.on("end", () => {
+            resolve(pos);
+        });
+        stream.on("error", reject);
     });
 }
 /**
@@ -83338,21 +81160,17 @@ function streamToBuffer2(stream, buffer, encoding) {
  * @param rs - The read stream.
  * @param file - Destination file path.
  */
-function readStreamToLocalFile(rs, file) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        return tslib.__generator(this, function (_a) {
-            return [2 /*return*/, new Promise(function (resolve, reject) {
-                    var ws = fs.createWriteStream(file);
-                    rs.on("error", function (err) {
-                        reject(err);
-                    });
-                    ws.on("error", function (err) {
-                        reject(err);
-                    });
-                    ws.on("close", resolve);
-                    rs.pipe(ws);
-                })];
+async function readStreamToLocalFile(rs, file) {
+    return new Promise((resolve, reject) => {
+        const ws = fs.createWriteStream(file);
+        rs.on("error", (err) => {
+            reject(err);
         });
+        ws.on("error", (err) => {
+            reject(err);
+        });
+        ws.on("close", resolve);
+        rs.pipe(ws);
     });
 }
 /**
@@ -83360,21 +81178,18 @@ function readStreamToLocalFile(rs, file) {
  *
  * Promisified version of fs.stat().
  */
-var fsStat = util.promisify(fs.stat);
-var fsCreateReadStream = fs.createReadStream;
+const fsStat = util.promisify(fs.stat);
+const fsCreateReadStream = fs.createReadStream;
 
 /**
  * A BlobClient represents a URL to an Azure Storage blob; the blob may be a block blob,
  * append blob, or page blob.
  */
-var BlobClient = /** @class */ (function (_super) {
-    tslib.__extends(BlobClient, _super);
-    function BlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _a;
-        var _this = this;
+class BlobClient extends StorageClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
         options = options || {};
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
             url = urlOrConnectionString;
@@ -83400,12 +81215,12 @@ var BlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -83425,33 +81240,27 @@ var BlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        (_a = _this.getBlobAndContainerNamesFromUrl(), _this._name = _a.blobName, _this._containerName = _a.containerName);
-        _this.blobContext = new Blob$1(_this.storageClientContext);
-        _this._snapshot = getURLParameter(_this.url, URLConstants.Parameters.SNAPSHOT);
-        _this._versionId = getURLParameter(_this.url, URLConstants.Parameters.VERSIONID);
-        return _this;
+        super(url, pipeline);
+        ({
+            blobName: this._name,
+            containerName: this._containerName
+        } = this.getBlobAndContainerNamesFromUrl());
+        this.blobContext = new Blob$1(this.storageClientContext);
+        this._snapshot = getURLParameter(this.url, URLConstants.Parameters.SNAPSHOT);
+        this._versionId = getURLParameter(this.url, URLConstants.Parameters.VERSIONID);
+    }
+    /**
+     * The name of the blob.
+     */
+    get name() {
+        return this._name;
+    }
+    /**
+     * The name of the storage container the blob is associated with.
+     */
+    get containerName() {
+        return this._containerName;
     }
-    Object.defineProperty(BlobClient.prototype, "name", {
-        /**
-         * The name of the blob.
-         */
-        get: function () {
-            return this._name;
-        },
-        enumerable: false,
-        configurable: true
-    });
-    Object.defineProperty(BlobClient.prototype, "containerName", {
-        /**
-         * The name of the storage container the blob is associated with.
-         */
-        get: function () {
-            return this._containerName;
-        },
-        enumerable: false,
-        configurable: true
-    });
     /**
      * Creates a new BlobClient object identical to the source but with the specified snapshot timestamp.
      * Provide "" will remove the snapshot and return a Client to the base blob.
@@ -83459,9 +81268,9 @@ var BlobClient = /** @class */ (function (_super) {
      * @param snapshot - The snapshot timestamp.
      * @returns A new BlobClient object identical to the source but with the specified snapshot timestamp
      */
-    BlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a new BlobClient object pointing to a version of this blob.
      * Provide "" will remove the versionId and return a Client to the base blob.
@@ -83469,30 +81278,30 @@ var BlobClient = /** @class */ (function (_super) {
      * @param versionId - The versionId.
      * @returns A new BlobClient object pointing to the version of this blob.
      */
-    BlobClient.prototype.withVersion = function (versionId) {
+    withVersion(versionId) {
         return new BlobClient(setURLParameter(this.url, URLConstants.Parameters.VERSIONID, versionId.length === 0 ? undefined : versionId), this.pipeline);
-    };
+    }
     /**
      * Creates a AppendBlobClient object.
      *
      */
-    BlobClient.prototype.getAppendBlobClient = function () {
+    getAppendBlobClient() {
         return new AppendBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Creates a BlockBlobClient object.
      *
      */
-    BlobClient.prototype.getBlockBlobClient = function () {
+    getBlockBlobClient() {
         return new BlockBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Creates a PageBlobClient object.
      *
      */
-    BlobClient.prototype.getPageBlobClient = function () {
+    getPageBlobClient() {
         return new PageBlobClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Reads or downloads a blob from the system, including its metadata and properties.
      * You can also call Get Blob to read a snapshot.
@@ -83552,98 +81361,77 @@ var BlobClient = /** @class */ (function (_super) {
      * }
      * ```
      */
-    BlobClient.prototype.download = function (offset, count, options) {
+    async download(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, res_1, wrappedRes, e_1;
-            var _this = this;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        options.conditions = options.conditions || {};
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        _b = createSpan("BlobClient-download", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.download(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
-                                    onDownloadProgress: coreHttp.isNode ? undefined : options.onProgress // for Node.js, progress is reported by RetriableReadableStream
-                                }, range: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }), rangeGetContentMD5: options.rangeGetContentMD5, rangeGetContentCRC64: options.rangeGetContentCrc64, snapshot: options.snapshot, cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        res_1 = _c.sent();
-                        wrappedRes = tslib.__assign(tslib.__assign({}, res_1), { _response: res_1._response, objectReplicationDestinationPolicyId: res_1.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res_1.objectReplicationRules) });
-                        // We support retrying when download stream unexpected ends in Node.js runtime
-                        // Following code shouldn't be bundled into browser build, however some
-                        // bundlers may try to bundle following code and "FileReadResponse.ts".
-                        // In this case, "FileDownloadResponse.browser.ts" will be used as a shim of "FileDownloadResponse.ts"
-                        // The config is in package.json "browser" field
-                        if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {
-                            // TODO: Default value or make it a required parameter?
-                            options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;
-                        }
-                        if (res_1.contentLength === undefined) {
-                            throw new RangeError("File download response doesn't contain valid content length header");
-                        }
-                        if (!res_1.etag) {
-                            throw new RangeError("File download response doesn't contain valid etag header");
-                        }
-                        return [2 /*return*/, new BlobDownloadResponse(wrappedRes, function (start) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var updatedOptions;
-                                var _a;
-                                return tslib.__generator(this, function (_b) {
-                                    switch (_b.label) {
-                                        case 0:
-                                            updatedOptions = {
-                                                leaseAccessConditions: options.conditions,
-                                                modifiedAccessConditions: {
-                                                    ifMatch: options.conditions.ifMatch || res_1.etag,
-                                                    ifModifiedSince: options.conditions.ifModifiedSince,
-                                                    ifNoneMatch: options.conditions.ifNoneMatch,
-                                                    ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,
-                                                    ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions
-                                                },
-                                                range: rangeToString({
-                                                    count: offset + res_1.contentLength - start,
-                                                    offset: start
-                                                }),
-                                                rangeGetContentMD5: options.rangeGetContentMD5,
-                                                rangeGetContentCRC64: options.rangeGetContentCrc64,
-                                                snapshot: options.snapshot,
-                                                cpkInfo: options.customerProvidedKey
-                                            };
-                                            return [4 /*yield*/, this.blobContext.download(tslib.__assign({ abortSignal: options.abortSignal }, updatedOptions))];
-                                        case 1: 
-                                        // Debug purpose only
-                                        // console.log(
-                                        //   `Read from internal stream, range: ${
-                                        //     updatedOptions.range
-                                        //   }, options: ${JSON.stringify(updatedOptions)}`
-                                        // );
-                                        return [2 /*return*/, (_b.sent()).readableStreamBody];
-                                    }
-                                });
-                            }); }, offset, res_1.contentLength, {
-                                maxRetryRequests: options.maxRetryRequests,
-                                onProgress: options.onProgress
-                            })];
-                    case 3:
-                        e_1 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        options.conditions = options.conditions || {};
+        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+        const { span, updatedOptions } = createSpan("BlobClient-download", options);
+        try {
+            const res = await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onDownloadProgress: coreHttp.isNode ? undefined : options.onProgress // for Node.js, progress is reported by RetriableReadableStream
+                }, range: offset === 0 && !count ? undefined : rangeToString({ offset, count }), rangeGetContentMD5: options.rangeGetContentMD5, rangeGetContentCRC64: options.rangeGetContentCrc64, snapshot: options.snapshot, cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedRes = Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });
+            // Return browser response immediately
+            if (false) {}
+            // We support retrying when download stream unexpected ends in Node.js runtime
+            // Following code shouldn't be bundled into browser build, however some
+            // bundlers may try to bundle following code and "FileReadResponse.ts".
+            // In this case, "FileDownloadResponse.browser.ts" will be used as a shim of "FileDownloadResponse.ts"
+            // The config is in package.json "browser" field
+            if (options.maxRetryRequests === undefined || options.maxRetryRequests < 0) {
+                // TODO: Default value or make it a required parameter?
+                options.maxRetryRequests = DEFAULT_MAX_DOWNLOAD_RETRY_REQUESTS;
+            }
+            if (res.contentLength === undefined) {
+                throw new RangeError(`File download response doesn't contain valid content length header`);
+            }
+            if (!res.etag) {
+                throw new RangeError(`File download response doesn't contain valid etag header`);
+            }
+            return new BlobDownloadResponse(wrappedRes, async (start) => {
+                var _a;
+                const updatedOptions = {
+                    leaseAccessConditions: options.conditions,
+                    modifiedAccessConditions: {
+                        ifMatch: options.conditions.ifMatch || res.etag,
+                        ifModifiedSince: options.conditions.ifModifiedSince,
+                        ifNoneMatch: options.conditions.ifNoneMatch,
+                        ifUnmodifiedSince: options.conditions.ifUnmodifiedSince,
+                        ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions
+                    },
+                    range: rangeToString({
+                        count: offset + res.contentLength - start,
+                        offset: start
+                    }),
+                    rangeGetContentMD5: options.rangeGetContentMD5,
+                    rangeGetContentCRC64: options.rangeGetContentCrc64,
+                    snapshot: options.snapshot,
+                    cpkInfo: options.customerProvidedKey
+                };
+                // Debug purpose only
+                // console.log(
+                //   `Read from internal stream, range: ${
+                //     updatedOptions.range
+                //   }, options: ${JSON.stringify(updatedOptions)}`
+                // );
+                return (await this.blobContext.download(Object.assign({ abortSignal: options.abortSignal }, updatedOptions))).readableStreamBody;
+            }, offset, res.contentLength, {
+                maxRetryRequests: options.maxRetryRequests,
+                onProgress: options.onProgress
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns true if the Azure blob resource represented by this client exists; false otherwise.
      *
@@ -83653,49 +81441,36 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - options to Exists operation.
      */
-    BlobClient.prototype.exists = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_2;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-exists", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.getProperties({
-                                abortSignal: options.abortSignal,
-                                customerProvidedKey: options.customerProvidedKey,
-                                conditions: options.conditions,
-                                tracingOptions: updatedOptions.tracingOptions
-                            })];
-                    case 2:
-                        _b.sent();
-                        return [2 /*return*/, true];
-                    case 3:
-                        e_2 = _b.sent();
-                        if (e_2.statusCode === 404) {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when checking blob existence"
-                            });
-                            return [2 /*return*/, false];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async exists(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-exists", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            await this.getProperties({
+                abortSignal: options.abortSignal,
+                customerProvidedKey: options.customerProvidedKey,
+                conditions: options.conditions,
+                tracingOptions: updatedOptions.tracingOptions
             });
-        });
-    };
+            return true;
+        }
+        catch (e) {
+            if (e.statusCode === 404) {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when checking blob existence"
+                });
+                return false;
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns all user-defined metadata, standard HTTP properties, and system properties
      * for the blob. It does not return the content of the blob.
@@ -83708,39 +81483,26 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - Optional options to Get Properties operation.
      */
-    BlobClient.prototype.getProperties = function (options) {
+    async getProperties(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, res, e_3;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-getProperties", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        options.conditions = options.conditions || {};
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.getProperties(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        res = _c.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) })];
-                    case 3:
-                        e_3 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-getProperties", options);
+        try {
+            options.conditions = options.conditions || {};
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            const res = await this.blobContext.getProperties(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey }, convertTracingToRequestOptionsBase(updatedOptions)));
+            return Object.assign(Object.assign({}, res), { _response: res._response, objectReplicationDestinationPolicyId: res.objectReplicationPolicyId, objectReplicationSourceProperties: parseObjectReplicationRecord(res.objectReplicationRules) });
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -83750,36 +81512,24 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - Optional options to Blob Delete operation.
      */
-    BlobClient.prototype.delete = function (options) {
+    async delete(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_4;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-delete", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.delete(tslib.__assign({ abortSignal: options.abortSignal, deleteSnapshots: options.deleteSnapshots, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_4 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-delete", options);
+        options.conditions = options.conditions || {};
+        try {
+            return await this.blobContext.delete(Object.assign({ abortSignal: options.abortSignal, deleteSnapshots: options.deleteSnapshots, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion if it exists. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -83789,45 +81539,32 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - Optional options to Blob Delete operation.
      */
-    BlobClient.prototype.deleteIfExists = function (options) {
+    async deleteIfExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, res, e_5;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("BlobClient-deleteIfExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.delete(updatedOptions)];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_5 = _d.sent();
-                        if (((_a = e_5.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobNotFound") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when deleting a blob or snapshot only if it exists."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_5.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_5.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-deleteIfExists", options);
+        try {
+            const res = await this.delete(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobNotFound") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when deleting a blob or snapshot only if it exists."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Restores the contents and metadata of soft deleted blob and any associated
      * soft deleted snapshots. Undelete Blob is supported only on version 2017-07-29
@@ -83836,34 +81573,22 @@ var BlobClient = /** @class */ (function (_super) {
      *
      * @param options - Optional options to Blob Undelete operation.
      */
-    BlobClient.prototype.undelete = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_6;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-undelete", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.undelete(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_6 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async undelete(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-undelete", options);
+        try {
+            return await this.blobContext.undelete(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets system properties on the blob.
      *
@@ -83876,37 +81601,25 @@ var BlobClient = /** @class */ (function (_super) {
      *                                                   headers without a value will be cleared.
      * @param options - Optional options to Blob Set HTTP Headers operation.
      */
-    BlobClient.prototype.setHTTPHeaders = function (blobHTTPHeaders, options) {
+    async setHTTPHeaders(blobHTTPHeaders, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_7;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setHTTPHeaders", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.setHttpHeaders(tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_7 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setHTTPHeaders", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.setHttpHeaders(Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets user-defined metadata for the specified blob as one or more name-value pairs.
      *
@@ -83918,37 +81631,25 @@ var BlobClient = /** @class */ (function (_super) {
      *                               If no value provided the existing metadata will be removed.
      * @param options - Optional options to Set Metadata operation.
      */
-    BlobClient.prototype.setMetadata = function (metadata, options) {
+    async setMetadata(metadata, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_8;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setMetadata", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.setMetadata(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_8 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setMetadata", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.setMetadata(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets tags on the underlying blob.
      * A blob can have up to 10 tags. Tag keys must be between 1 and 128 characters.  Tag values must be between 0 and 256 characters.
@@ -83958,118 +81659,81 @@ var BlobClient = /** @class */ (function (_super) {
      * @param tags -
      * @param options -
      */
-    BlobClient.prototype.setTags = function (tags, options) {
+    async setTags(tags, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_9;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setTags", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.setTags(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)), { tags: toBlobTags(tags) }))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_9 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_9.message
-                        });
-                        throw e_9;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setTags", options);
+        try {
+            return await this.blobContext.setTags(Object.assign(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)), { tags: toBlobTags(tags) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the tags associated with the underlying blob.
      *
      * @param options -
      */
-    BlobClient.prototype.getTags = function (options) {
+    async getTags(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, response, wrappedResponse, e_10;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-getTags", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.getTags(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _c.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_10 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_10.message
-                        });
-                        throw e_10;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-getTags", options);
+        try {
+            const response = await this.blobContext.getTags(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, tags: toTags({ blobTagSet: response.blobTagSet }) || {} });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Get a {@link BlobLeaseClient} that manages leases on the blob.
      *
      * @param proposeLeaseId - Initial proposed lease Id.
      * @returns A new BlobLeaseClient object for managing leases on the blob.
      */
-    BlobClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
+    getBlobLeaseClient(proposeLeaseId) {
         return new BlobLeaseClient(this, proposeLeaseId);
-    };
+    }
     /**
      * Creates a read-only snapshot of a blob.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/snapshot-blob
      *
      * @param options - Optional options to the Blob Create Snapshot operation.
      */
-    BlobClient.prototype.createSnapshot = function (options) {
+    async createSnapshot(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_11;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-createSnapshot", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blobContext.createSnapshot(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_11 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_11.message
-                        });
-                        throw e_11;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-createSnapshot", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blobContext.createSnapshot(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Asynchronously copies a blob to a destination within the storage account.
      * This method returns a long running operation poller that allows you to wait
@@ -84142,57 +81806,25 @@ var BlobClient = /** @class */ (function (_super) {
      * @param copySource - url to the source Azure Blob/File.
      * @param options - Optional options to the Blob Start Copy From URL operation.
      */
-    BlobClient.prototype.beginCopyFromURL = function (copySource, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var client, poller;
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        client = {
-                            abortCopyFromURL: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.abortCopyFromURL.apply(_this, args);
-                            },
-                            getProperties: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.getProperties.apply(_this, args);
-                            },
-                            startCopyFromURL: function () {
-                                var args = [];
-                                for (var _i = 0; _i < arguments.length; _i++) {
-                                    args[_i] = arguments[_i];
-                                }
-                                return _this.startCopyFromURL.apply(_this, args);
-                            }
-                        };
-                        poller = new BlobBeginCopyFromUrlPoller({
-                            blobClient: client,
-                            copySource: copySource,
-                            intervalInMs: options.intervalInMs,
-                            onProgress: options.onProgress,
-                            resumeFrom: options.resumeFrom,
-                            startCopyFromURLOptions: options
-                        });
-                        // Trigger the startCopyFromURL call by calling poll.
-                        // Any errors from this method should be surfaced to the user.
-                        return [4 /*yield*/, poller.poll()];
-                    case 1:
-                        // Trigger the startCopyFromURL call by calling poll.
-                        // Any errors from this method should be surfaced to the user.
-                        _a.sent();
-                        return [2 /*return*/, poller];
-                }
-            });
+    async beginCopyFromURL(copySource, options = {}) {
+        const client = {
+            abortCopyFromURL: (...args) => this.abortCopyFromURL(...args),
+            getProperties: (...args) => this.getProperties(...args),
+            startCopyFromURL: (...args) => this.startCopyFromURL(...args)
+        };
+        const poller = new BlobBeginCopyFromUrlPoller({
+            blobClient: client,
+            copySource,
+            intervalInMs: options.intervalInMs,
+            onProgress: options.onProgress,
+            resumeFrom: options.resumeFrom,
+            startCopyFromURLOptions: options
         });
-    };
+        // Trigger the startCopyFromURL call by calling poll.
+        // Any errors from this method should be surfaced to the user.
+        await poller.poll();
+        return poller;
+    }
     /**
      * Aborts a pending asynchronous Copy Blob operation, and leaves a destination blob with zero
      * length and full metadata. Version 2012-02-12 and newer.
@@ -84201,34 +81833,22 @@ var BlobClient = /** @class */ (function (_super) {
      * @param copyId - Id of the Copy From URL operation.
      * @param options - Optional options to the Blob Abort Copy From URL operation.
      */
-    BlobClient.prototype.abortCopyFromURL = function (copyId, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_12;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-abortCopyFromURL", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.abortCopyFromURL(copyId, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_12 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_12.message
-                        });
-                        throw e_12;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async abortCopyFromURL(copyId, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-abortCopyFromURL", options);
+        try {
+            return await this.blobContext.abortCopyFromURL(copyId, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The synchronous Copy From URL operation copies a blob or an internet resource to a new blob. It will not
      * return a response until the copy is complete.
@@ -84237,42 +81857,30 @@ var BlobClient = /** @class */ (function (_super) {
      * @param copySource - The source URL to copy from, Shared Access Signature(SAS) maybe needed for authentication
      * @param options -
      */
-    BlobClient.prototype.syncCopyFromURL = function (copySource, options) {
+    async syncCopyFromURL(copySource, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_13;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-syncCopyFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.copyFromURL(copySource, tslib.__assign({ abortSignal: options.abortSignal, metadata: options.metadata, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                }, sourceContentMD5: options.sourceContentMD5, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_13 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_13.message
-                        });
-                        throw e_13;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-syncCopyFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            return await this.blobContext.copyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, metadata: options.metadata, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, sourceContentMD5: options.sourceContentMD5, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets the tier on a blob. The operation is allowed on a page blob in a premium
      * storage account and on a block blob in a blob storage account (locally redundant
@@ -84284,159 +81892,119 @@ var BlobClient = /** @class */ (function (_super) {
      * @param tier - The tier to be set on the blob. Valid values are Hot, Cool, or Archive.
      * @param options - Optional options to the Blob Set Tier operation.
      */
-    BlobClient.prototype.setAccessTier = function (tier, options) {
+    async setAccessTier(tier, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_14;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-setAccessTier", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.setTier(toAccessTier(tier), tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), rehydratePriority: options.rehydratePriority }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_14 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_14.message
-                        });
-                        throw e_14;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-setAccessTier", options);
+        try {
+            return await this.blobContext.setTier(toAccessTier(tier), Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), rehydratePriority: options.rehydratePriority }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    BlobClient.prototype.downloadToBuffer = function (param1, param2, param3, param4) {
-        if (param4 === void 0) { param4 = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var buffer, offset, count, options, _a, span, updatedOptions, response, transferProgress_1, batch, _loop_1, off, e_15;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        offset = 0;
-                        count = 0;
-                        options = param4;
-                        if (param1 instanceof Buffer) {
-                            buffer = param1;
-                            offset = param2 || 0;
-                            count = typeof param3 === "number" ? param3 : 0;
-                        }
-                        else {
-                            offset = typeof param1 === "number" ? param1 : 0;
-                            count = typeof param2 === "number" ? param2 : 0;
-                            options = param3 || {};
-                        }
-                        _a = createSpan("BlobClient-downloadToBuffer", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0) {
-                            throw new RangeError("blockSize option must be >= 0");
-                        }
-                        if (options.blockSize === 0) {
-                            options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                        }
-                        if (offset < 0) {
-                            throw new RangeError("offset option must be >= 0");
-                        }
-                        if (count && count <= 0) {
-                            throw new RangeError("count option must be greater than 0");
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        if (!!count) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.getProperties(tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
-                    case 2:
-                        response = _b.sent();
-                        count = response.contentLength - offset;
-                        if (count < 0) {
-                            throw new RangeError("offset " + offset + " shouldn't be larger than blob size " + response.contentLength);
-                        }
-                        _b.label = 3;
-                    case 3:
-                        // Allocate the buffer of size = count if the buffer is not provided
-                        if (!buffer) {
-                            try {
-                                buffer = Buffer.alloc(count);
-                            }
-                            catch (error) {
-                                throw new Error("Unable to allocate the buffer of size: " + count + "(in bytes). Please try passing your own buffer to the \"downloadToBuffer\" method or try using other methods like \"download\" or \"downloadToFile\".\t " + error.message);
-                            }
-                        }
-                        if (buffer.length < count) {
-                            throw new RangeError("The buffer's size should be equal to or larger than the request count of bytes: " + count);
-                        }
-                        transferProgress_1 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_1 = function (off) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var chunkEnd, response, stream;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            chunkEnd = offset + count;
-                                            if (off + options.blockSize < chunkEnd) {
-                                                chunkEnd = off + options.blockSize;
-                                            }
-                                            return [4 /*yield*/, this.download(off, chunkEnd - off, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    maxRetryRequests: options.maxRetryRequestsPerBlock,
-                                                    customerProvidedKey: options.customerProvidedKey,
-                                                    tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions))
-                                                })];
-                                        case 1:
-                                            response = _a.sent();
-                                            stream = response.readableStreamBody;
-                                            return [4 /*yield*/, streamToBuffer(stream, buffer, off - offset, chunkEnd - offset)];
-                                        case 2:
-                                            _a.sent();
-                                            // Update progress after block is downloaded, in case of block trying
-                                            // Could provide finer grained progress updating inside HTTP requests,
-                                            // only if convenience layer download try is enabled
-                                            transferProgress_1 += chunkEnd - off;
-                                            if (options.onProgress) {
-                                                options.onProgress({ loadedBytes: transferProgress_1 });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (off = offset; off < offset + count; off = off + options.blockSize) {
-                            _loop_1(off);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [2 /*return*/, buffer];
-                    case 5:
-                        e_15 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_15.message
-                        });
-                        throw e_15;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    async downloadToBuffer(param1, param2, param3, param4 = {}) {
+        let buffer;
+        let offset = 0;
+        let count = 0;
+        let options = param4;
+        if (param1 instanceof Buffer) {
+            buffer = param1;
+            offset = param2 || 0;
+            count = typeof param3 === "number" ? param3 : 0;
+        }
+        else {
+            offset = typeof param1 === "number" ? param1 : 0;
+            count = typeof param2 === "number" ? param2 : 0;
+            options = param3 || {};
+        }
+        const { span, updatedOptions } = createSpan("BlobClient-downloadToBuffer", options);
+        try {
+            if (!options.blockSize) {
+                options.blockSize = 0;
+            }
+            if (options.blockSize < 0) {
+                throw new RangeError("blockSize option must be >= 0");
+            }
+            if (options.blockSize === 0) {
+                options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
+            }
+            if (offset < 0) {
+                throw new RangeError("offset option must be >= 0");
+            }
+            if (count && count <= 0) {
+                throw new RangeError("count option must be greater than 0");
+            }
+            if (!options.conditions) {
+                options.conditions = {};
+            }
+            // Customer doesn't specify length, get it
+            if (!count) {
+                const response = await this.getProperties(Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+                count = response.contentLength - offset;
+                if (count < 0) {
+                    throw new RangeError(`offset ${offset} shouldn't be larger than blob size ${response.contentLength}`);
                 }
+            }
+            // Allocate the buffer of size = count if the buffer is not provided
+            if (!buffer) {
+                try {
+                    buffer = Buffer.alloc(count);
+                }
+                catch (error) {
+                    throw new Error(`Unable to allocate the buffer of size: ${count}(in bytes). Please try passing your own buffer to the "downloadToBuffer" method or try using other methods like "download" or "downloadToFile".\t ${error.message}`);
+                }
+            }
+            if (buffer.length < count) {
+                throw new RangeError(`The buffer's size should be equal to or larger than the request count of bytes: ${count}`);
+            }
+            let transferProgress = 0;
+            const batch = new Batch(options.concurrency);
+            for (let off = offset; off < offset + count; off = off + options.blockSize) {
+                batch.addOperation(async () => {
+                    // Exclusive chunk end position
+                    let chunkEnd = offset + count;
+                    if (off + options.blockSize < chunkEnd) {
+                        chunkEnd = off + options.blockSize;
+                    }
+                    const response = await this.download(off, chunkEnd - off, {
+                        abortSignal: options.abortSignal,
+                        conditions: options.conditions,
+                        maxRetryRequests: options.maxRetryRequestsPerBlock,
+                        customerProvidedKey: options.customerProvidedKey,
+                        tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions))
+                    });
+                    const stream = response.readableStreamBody;
+                    await streamToBuffer(stream, buffer, off - offset, chunkEnd - offset);
+                    // Update progress after block is downloaded, in case of block trying
+                    // Could provide finer grained progress updating inside HTTP requests,
+                    // only if convenience layer download try is enabled
+                    transferProgress += chunkEnd - off;
+                    if (options.onProgress) {
+                        options.onProgress({ loadedBytes: transferProgress });
+                    }
+                });
+            }
+            await batch.do();
+            return buffer;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -84453,48 +82021,31 @@ var BlobClient = /** @class */ (function (_super) {
      *                                                 content is already read and written into a local file
      *                                                 at the specified path.
      */
-    BlobClient.prototype.downloadToFile = function (filePath, offset, count, options) {
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, e_16;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobClient-downloadToFile", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        return [4 /*yield*/, this.download(offset, count, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
-                    case 2:
-                        response = _b.sent();
-                        if (!response.readableStreamBody) return [3 /*break*/, 4];
-                        return [4 /*yield*/, readStreamToLocalFile(response.readableStreamBody, filePath)];
-                    case 3:
-                        _b.sent();
-                        _b.label = 4;
-                    case 4:
-                        // The stream is no longer accessible so setting it to undefined.
-                        response.blobDownloadStream = undefined;
-                        return [2 /*return*/, response];
-                    case 5:
-                        e_16 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_16.message
-                        });
-                        throw e_16;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
-                }
+    async downloadToFile(filePath, offset = 0, count, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobClient-downloadToFile", options);
+        try {
+            const response = await this.download(offset, count, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+            if (response.readableStreamBody) {
+                await readStreamToLocalFile(response.readableStreamBody, filePath);
+            }
+            // The stream is no longer accessible so setting it to undefined.
+            response.blobDownloadStream = undefined;
+            return response;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    BlobClient.prototype.getBlobAndContainerNamesFromUrl = function () {
-        var containerName;
-        var blobName;
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    getBlobAndContainerNamesFromUrl() {
+        let containerName;
+        let blobName;
         try {
             //  URL may look like the following
             // "https://myaccount.blob.core.windows.net/mycontainer/blob?sasString";
@@ -84503,11 +82054,11 @@ var BlobClient = /** @class */ (function (_super) {
             // "https://myaccount.blob.core.windows.net/mycontainer/blob/a.txt";
             // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername/blob`
             // http://localhost:10001/devstoreaccount1/containername/blob
-            var parsedUrl = coreHttp.URLBuilder.parse(this.url);
+            const parsedUrl = coreHttp.URLBuilder.parse(this.url);
             if (parsedUrl.getHost().split(".")[1] === "blob") {
                 // "https://myaccount.blob.core.windows.net/containername/blob".
                 // .getPath() -> /containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
                 containerName = pathComponents[1];
                 blobName = pathComponents[3];
             }
@@ -84515,14 +82066,14 @@ var BlobClient = /** @class */ (function (_super) {
                 // IPv4/IPv6 address hosts... Example - http://192.0.0.10:10001/devstoreaccount1/containername/blob
                 // Single word domain without a [dot] in the endpoint... Example - http://localhost:10001/devstoreaccount1/containername/blob
                 // .getPath() -> /devstoreaccount1/containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)/([^/]*)(/(.*))?");
                 containerName = pathComponents[2];
                 blobName = pathComponents[4];
             }
             else {
                 // "https://customdomain.com/containername/blob".
                 // .getPath() -> /containername/blob
-                var pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
+                const pathComponents = parsedUrl.getPath().match("/([^/]*)(/(.*))?");
                 containerName = pathComponents[1];
                 blobName = pathComponents[3];
             }
@@ -84535,12 +82086,12 @@ var BlobClient = /** @class */ (function (_super) {
             if (!containerName) {
                 throw new Error("Provided containerName is invalid.");
             }
-            return { blobName: blobName, containerName: containerName };
+            return { blobName, containerName };
         }
         catch (error) {
             throw new Error("Unable to extract blobName and containerName with provided information.");
         }
-    };
+    }
     /**
      * Asynchronously copies a blob to a destination within the storage account.
      * In version 2012-02-12 and later, the source for a Copy Blob operation can be
@@ -84554,43 +82105,31 @@ var BlobClient = /** @class */ (function (_super) {
      * @param copySource - url to the source Azure Blob/File.
      * @param options - Optional options to the Blob Start Copy From URL operation.
      */
-    BlobClient.prototype.startCopyFromURL = function (copySource, options) {
+    async startCopyFromURL(copySource, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_17;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobClient-startCopyFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blobContext.startCopyFromURL(copySource, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,
-                                    sourceIfTags: options.sourceConditions.tagConditions
-                                }, rehydratePriority: options.rehydratePriority, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), sealBlob: options.sealBlob }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_17 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_17.message
-                        });
-                        throw e_17;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobClient-startCopyFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            return await this.blobContext.startCopyFromURL(copySource, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince,
+                    sourceIfTags: options.sourceConditions.tagConditions
+                }, rehydratePriority: options.rehydratePriority, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags), sealBlob: options.sealBlob }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Only available for BlobClient constructed with a shared key credential.
      *
@@ -84602,29 +82141,25 @@ var BlobClient = /** @class */ (function (_super) {
      * @param options - Optional parameters.
      * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
      */
-    BlobClient.prototype.generateSasUrl = function (options) {
-        var _this = this;
-        return new Promise(function (resolve) {
-            if (!(_this.credential instanceof StorageSharedKeyCredential)) {
+    generateSasUrl(options) {
+        return new Promise((resolve) => {
+            if (!(this.credential instanceof StorageSharedKeyCredential)) {
                 throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
             }
-            var sas = generateBlobSASQueryParameters(tslib.__assign({ containerName: _this._containerName, blobName: _this._name, snapshotTime: _this._snapshot, versionId: _this._versionId }, options), _this.credential).toString();
-            resolve(appendToURLQuery(_this.url, sas));
+            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName, blobName: this._name, snapshotTime: this._snapshot, versionId: this._versionId }, options), this.credential).toString();
+            resolve(appendToURLQuery(this.url, sas));
         });
-    };
-    return BlobClient;
-}(StorageClient));
+    }
+}
 /**
  * AppendBlobClient defines a set of operations applicable to append blobs.
  */
-var AppendBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(AppendBlobClient, _super);
-    function AppendBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class AppendBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
@@ -84651,12 +82186,12 @@ var AppendBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -84676,9 +82211,8 @@ var AppendBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.appendBlobContext = new AppendBlob(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.appendBlobContext = new AppendBlob(this.storageClientContext);
     }
     /**
      * Creates a new AppendBlobClient object identical to the source but with the
@@ -84688,9 +82222,9 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * @param snapshot - The snapshot timestamp.
      * @returns A new AppendBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    AppendBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new AppendBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-blob
@@ -84705,37 +82239,25 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * await appendBlobClient.create();
      * ```
      */
-    AppendBlobClient.prototype.create = function (options) {
+    async create(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_18;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-create", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.create(0, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_18 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_18.message
-                        });
-                        throw e_18;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-create", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.create(0, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a 0-length append blob. Call AppendBlock to append data to an append blob.
      * If the blob with the same name already exists, the content of the existing blob will remain unchanged.
@@ -84743,81 +82265,56 @@ var AppendBlobClient = /** @class */ (function (_super) {
      *
      * @param options -
      */
-    AppendBlobClient.prototype.createIfNotExists = function (options) {
+    async createIfNotExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, conditions, res, e_19;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("AppendBlobClient-createIfNotExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        conditions = { ifNoneMatch: ETagAny };
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.create(tslib.__assign(tslib.__assign({}, updatedOptions), { conditions: conditions }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_19 = _d.sent();
-                        if (((_a = e_19.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when creating a blob only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_19.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_19.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_19.message
-                        });
-                        throw e_19;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-createIfNotExists", options);
+        const conditions = { ifNoneMatch: ETagAny };
+        try {
+            const res = await this.create(Object.assign(Object.assign({}, updatedOptions), { conditions }));
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a blob only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Seals the append blob, making it read only.
      *
      * @param options -
      */
-    AppendBlobClient.prototype.seal = function (options) {
+    async seal(options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_20;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-seal", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.appendBlobContext.seal(tslib.__assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_20 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_20.message
-                        });
-                        throw e_20;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-seal", options);
+        options.conditions = options.conditions || {};
+        try {
+            return await this.appendBlobContext.seal(Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Commits a new block of data to the end of the existing append blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/append-block
@@ -84842,39 +82339,27 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * await existingAppendBlobClient.appendBlock(content, content.length);
      * ```
      */
-    AppendBlobClient.prototype.appendBlock = function (body, contentLength, options) {
+    async appendBlock(body, contentLength, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_21;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-appendBlock", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.appendBlock(contentLength, body, tslib.__assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
-                                    onUploadProgress: options.onProgress
-                                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_21 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_21.message
-                        });
-                        throw e_21;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-appendBlock", options);
+        options.conditions = options.conditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.appendBlock(contentLength, body, Object.assign({ abortSignal: options.abortSignal, appendPositionAccessConditions: options.conditions, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Append Block operation commits a new block of data to the end of an existing append blob
      * where the contents are read from a source url.
@@ -84889,56 +82374,41 @@ var AppendBlobClient = /** @class */ (function (_super) {
      * @param count - Number of bytes to be appended as a block
      * @param options -
      */
-    AppendBlobClient.prototype.appendBlockFromURL = function (sourceURL, sourceOffset, count, options) {
+    async appendBlockFromURL(sourceURL, sourceOffset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_22;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("AppendBlobClient-appendBlockFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, tslib.__assign({ abortSignal: options.abortSignal, sourceRange: rangeToString({ offset: sourceOffset, count: count }), sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, appendPositionAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_22 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_22.message
-                        });
-                        throw e_22;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("AppendBlobClient-appendBlockFromURL", options);
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.appendBlobContext.appendBlockFromUrl(sourceURL, 0, Object.assign({ abortSignal: options.abortSignal, sourceRange: rangeToString({ offset: sourceOffset, count }), sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, appendPositionAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return AppendBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * BlockBlobClient defines a set of operations applicable to block blobs.
  */
-var BlockBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(BlockBlobClient, _super);
-    function BlockBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class BlockBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
@@ -84965,12 +82435,12 @@ var BlockBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -84990,10 +82460,9 @@ var BlockBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.blockBlobContext = new BlockBlob(_this.storageClientContext);
-        _this._blobContext = new Blob$1(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.blockBlobContext = new BlockBlob(this.storageClientContext);
+        this._blobContext = new Blob$1(this.storageClientContext);
     }
     /**
      * Creates a new BlockBlobClient object identical to the source but with the
@@ -85003,9 +82472,9 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param snapshot - The snapshot timestamp.
      * @returns A new BlockBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    BlockBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new BlockBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -85036,47 +82505,35 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param query -
      * @param options -
      */
-    BlockBlobClient.prototype.query = function (query, options) {
+    async query(query, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, response, e_23;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        _b = createSpan("BlockBlobClient-query", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this._blobContext.query(tslib.__assign({ abortSignal: options.abortSignal, queryRequest: {
-                                    queryType: "SQL",
-                                    expression: query,
-                                    inputSerialization: toQuerySerialization(options.inputTextConfiguration),
-                                    outputSerialization: toQuerySerialization(options.outputTextConfiguration)
-                                }, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _c.sent();
-                        return [2 /*return*/, new BlobQueryResponse(response, {
-                                abortSignal: options.abortSignal,
-                                onProgress: options.onProgress,
-                                onError: options.onError
-                            })];
-                    case 3:
-                        e_23 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_23.message
-                        });
-                        throw e_23;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+        const { span, updatedOptions } = createSpan("BlockBlobClient-query", options);
+        try {
+            if (false) {}
+            const response = await this._blobContext.query(Object.assign({ abortSignal: options.abortSignal, queryRequest: {
+                    queryType: "SQL",
+                    expression: query,
+                    inputSerialization: toQuerySerialization(options.inputTextConfiguration),
+                    outputSerialization: toQuerySerialization(options.outputTextConfiguration)
+                }, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            return new BlobQueryResponse(response, {
+                abortSignal: options.abortSignal,
+                onProgress: options.onProgress,
+                onError: options.onError
             });
-        });
-    };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new block blob, or updates the content of an existing block blob.
      * Updating an existing block blob overwrites any existing metadata on the blob.
@@ -85104,39 +82561,27 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
      * ```
      */
-    BlockBlobClient.prototype.upload = function (body, contentLength, options) {
+    async upload(body, contentLength, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_24;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("BlockBlobClient-upload", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.upload(contentLength, body, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
-                                    onUploadProgress: options.onProgress
-                                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_24 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_24.message
-                        });
-                        throw e_24;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-upload", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.upload(contentLength, body, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new Block Blob where the contents of the blob are read from a given URL.
      * This API is supported beginning with the 2020-04-08 version. Partial updates
@@ -85155,43 +82600,31 @@ var BlockBlobClient = /** @class */ (function (_super) {
      *                           - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
      * @param options - Optional parameters.
      */
-    BlockBlobClient.prototype.syncUploadFromURL = function (sourceURL, options) {
+    async syncUploadFromURL(sourceURL, options = {}) {
         var _a, _b, _c, _d, _e;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _f, span, updatedOptions, e_25;
-            return tslib.__generator(this, function (_g) {
-                switch (_g.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _f = createSpan("BlockBlobClient-syncUploadFromURL", options), span = _f.span, updatedOptions = _f.updatedOptions;
-                        _g.label = 1;
-                    case 1:
-                        _g.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.putBlobFromUrl(0, sourceURL, tslib.__assign(tslib.__assign(tslib.__assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: options.conditions.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: (_a = options.sourceConditions) === null || _a === void 0 ? void 0 : _a.ifMatch,
-                                    sourceIfModifiedSince: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifModifiedSince,
-                                    sourceIfNoneMatch: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifUnmodifiedSince,
-                                    sourceIfTags: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.tagConditions
-                                }, cpkInfo: options.customerProvidedKey, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _g.sent()];
-                    case 3:
-                        e_25 = _g.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_25.message
-                        });
-                        throw e_25;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-syncUploadFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.putBlobFromUrl(0, sourceURL, Object.assign(Object.assign(Object.assign({}, options), { blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: options.conditions.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: (_a = options.sourceConditions) === null || _a === void 0 ? void 0 : _a.ifMatch,
+                    sourceIfModifiedSince: (_b = options.sourceConditions) === null || _b === void 0 ? void 0 : _b.ifModifiedSince,
+                    sourceIfNoneMatch: (_c = options.sourceConditions) === null || _c === void 0 ? void 0 : _c.ifNoneMatch,
+                    sourceIfUnmodifiedSince: (_d = options.sourceConditions) === null || _d === void 0 ? void 0 : _d.ifUnmodifiedSince,
+                    sourceIfTags: (_e = options.sourceConditions) === null || _e === void 0 ? void 0 : _e.tagConditions
+                }, cpkInfo: options.customerProvidedKey, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Uploads the specified block to the block blob's "staging area" to be later
      * committed by a call to commitBlockList.
@@ -85203,37 +82636,25 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Block Blob Stage Block operation.
      * @returns Response data for the Block Blob Stage Block operation.
      */
-    BlockBlobClient.prototype.stageBlock = function (blockId, body, contentLength, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_26;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-stageBlock", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.stageBlock(blockId, contentLength, body, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, requestOptions: {
-                                    onUploadProgress: options.onProgress
-                                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_26 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_26.message
-                        });
-                        throw e_26;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async stageBlock(blockId, body, contentLength, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-stageBlock", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.stageBlock(blockId, contentLength, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Stage Block From URL operation creates a new block to be committed as part
      * of a blob where the contents are read from a URL.
@@ -85255,36 +82676,23 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Block Blob Stage Block From URL operation.
      * @returns Response data for the Block Blob Stage Block From URL operation.
      */
-    BlockBlobClient.prototype.stageBlockFromURL = function (blockId, sourceURL, offset, count, options) {
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_27;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-stageBlockFromURL", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset: offset, count: count }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_27 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_27.message
-                        });
-                        throw e_27;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async stageBlockFromURL(blockId, sourceURL, offset = 0, count, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-stageBlockFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.stageBlockFromURL(blockId, 0, sourceURL, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, sourceRange: offset === 0 && !count ? undefined : rangeToString({ offset, count }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Writes a blob by specifying the list of block IDs that make up the blob.
      * In order to be written as part of a blob, a block must have been successfully written
@@ -85297,37 +82705,25 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Block Blob Commit Block List operation.
      * @returns Response data for the Block Blob Commit Block List operation.
      */
-    BlockBlobClient.prototype.commitBlockList = function (blocks, options) {
+    async commitBlockList(blocks, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_28;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("BlockBlobClient-commitBlockList", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.blockBlobContext.commitBlockList({ latest: blocks }, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_28 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_28.message
-                        });
-                        throw e_28;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("BlockBlobClient-commitBlockList", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.blockBlobContext.commitBlockList({ latest: blocks }, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns the list of blocks that have been uploaded as part of a block blob
      * using the specified block list filter.
@@ -85338,43 +82734,30 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Block Blob Get Block List operation.
      * @returns Response data for the Block Blob Get Block List operation.
      */
-    BlockBlobClient.prototype.getBlockList = function (listType, options) {
+    async getBlockList(listType, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, res, e_29;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlockBlobClient-getBlockList", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.blockBlobContext.getBlockList(listType, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        res = _c.sent();
-                        if (!res.committedBlocks) {
-                            res.committedBlocks = [];
-                        }
-                        if (!res.uncommittedBlocks) {
-                            res.uncommittedBlocks = [];
-                        }
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_29 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_29.message
-                        });
-                        throw e_29;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-getBlockList", options);
+        try {
+            const res = await this.blockBlobContext.getBlockList(listType, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+            if (!res.committedBlocks) {
+                res.committedBlocks = [];
+            }
+            if (!res.uncommittedBlocks) {
+                res.uncommittedBlocks = [];
+            }
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     // High level functions
     /**
      * Uploads a Buffer(Node.js)/Blob(browsers)/ArrayBuffer/ArrayBufferView object to a BlockBlob.
@@ -85387,42 +82770,36 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param data - Buffer(Node.js), Blob, ArrayBuffer or ArrayBufferView
      * @param options -
      */
-    BlockBlobClient.prototype.uploadData = function (data, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, buffer_1, browserBlob_1;
-            return tslib.__generator(this, function (_b) {
-                _a = createSpan("BlockBlobClient-uploadData", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                try {
-                    if (true) {
-                        if (data instanceof Buffer) {
-                            buffer_1 = data;
-                        }
-                        else if (data instanceof ArrayBuffer) {
-                            buffer_1 = Buffer.from(data);
-                        }
-                        else {
-                            data = data;
-                            buffer_1 = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
-                        }
-                        return [2 /*return*/, this.uploadSeekableInternal(function (offset, size) { return buffer_1.slice(offset, offset + size); }, buffer_1.byteLength, updatedOptions)];
-                    }
-                    else {}
+    async uploadData(data, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadData", options);
+        try {
+            if (true) {
+                let buffer;
+                if (data instanceof Buffer) {
+                    buffer = data;
                 }
-                catch (e) {
-                    span.setStatus({
-                        code: coreTracing.SpanStatusCode.ERROR,
-                        message: e.message
-                    });
-                    throw e;
+                else if (data instanceof ArrayBuffer) {
+                    buffer = Buffer.from(data);
                 }
-                finally {
-                    span.end();
+                else {
+                    data = data;
+                    buffer = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
                 }
-                return [2 /*return*/];
+                return this.uploadSeekableInternal((offset, size) => buffer.slice(offset, offset + size), buffer.byteLength, updatedOptions);
+            }
+            else {}
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN BROWSERS.
      *
@@ -85438,35 +82815,23 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to upload browser data.
      * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadBrowserData = function (browserData, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, browserBlob_2, e_30;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-uploadBrowserData", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        browserBlob_2 = new Blob([browserData]);
-                        return [4 /*yield*/, this.uploadSeekableInternal(function (offset, size) { return browserBlob_2.slice(offset, offset + size); }, browserBlob_2.size, updatedOptions)];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_30 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_30.message
-                        });
-                        throw e_30;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async uploadBrowserData(browserData, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadBrowserData", options);
+        try {
+            const browserBlob = new Blob([browserData]);
+            return await this.uploadSeekableInternal((offset, size) => browserBlob.slice(offset, offset + size), browserBlob.size, updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      *
      * Uploads data to block blob. Requires a bodyFactory as the data source,
@@ -85482,115 +82847,88 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to Upload to Block Blob operation.
      * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadSeekableInternal = function (bodyFactory, size, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, numBlocks_1, blockList_1, blockIDPrefix_1, transferProgress_2, batch, _loop_2, i, e_31;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blockSize) {
-                            options.blockSize = 0;
-                        }
-                        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
-                            throw new RangeError("blockSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES);
-                        }
-                        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
-                            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
-                        }
-                        if (options.maxSingleShotSize < 0 ||
-                            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
-                            throw new RangeError("maxSingleShotSize option must be >= 0 and <= " + BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES);
-                        }
-                        if (options.blockSize === 0) {
-                            if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {
-                                throw new RangeError(size + " is too larger to upload to a block blob.");
-                            }
-                            if (size > options.maxSingleShotSize) {
-                                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
-                                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
-                                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
-                                }
-                            }
-                        }
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-uploadSeekableInternal", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 5, 6, 7]);
-                        if (!(size <= options.maxSingleShotSize)) return [3 /*break*/, 3];
-                        return [4 /*yield*/, this.upload(bodyFactory(0, size), size, updatedOptions)];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        numBlocks_1 = Math.floor((size - 1) / options.blockSize) + 1;
-                        if (numBlocks_1 > BLOCK_BLOB_MAX_BLOCKS) {
-                            throw new RangeError("The buffer's size is too big or the BlockSize is too small;" +
-                                ("the number of blocks must be <= " + BLOCK_BLOB_MAX_BLOCKS));
-                        }
-                        blockList_1 = [];
-                        blockIDPrefix_1 = coreHttp.generateUuid();
-                        transferProgress_2 = 0;
-                        batch = new Batch(options.concurrency);
-                        _loop_2 = function (i) {
-                            batch.addOperation(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                var blockID, start, end, contentLength;
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0:
-                                            blockID = generateBlockID(blockIDPrefix_1, i);
-                                            start = options.blockSize * i;
-                                            end = i === numBlocks_1 - 1 ? size : start + options.blockSize;
-                                            contentLength = end - start;
-                                            blockList_1.push(blockID);
-                                            return [4 /*yield*/, this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {
-                                                    abortSignal: options.abortSignal,
-                                                    conditions: options.conditions,
-                                                    encryptionScope: options.encryptionScope,
-                                                    tracingOptions: updatedOptions.tracingOptions
-                                                })];
-                                        case 1:
-                                            _a.sent();
-                                            // Update progress after block is successfully uploaded to server, in case of block trying
-                                            // TODO: Hook with convenience layer progress event in finer level
-                                            transferProgress_2 += contentLength;
-                                            if (options.onProgress) {
-                                                options.onProgress({
-                                                    loadedBytes: transferProgress_2
-                                                });
-                                            }
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); });
-                        };
-                        for (i = 0; i < numBlocks_1; i++) {
-                            _loop_2(i);
-                        }
-                        return [4 /*yield*/, batch.do()];
-                    case 4:
-                        _b.sent();
-                        return [2 /*return*/, this.commitBlockList(blockList_1, updatedOptions)];
-                    case 5:
-                        e_31 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_31.message
-                        });
-                        throw e_31;
-                    case 6:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 7: return [2 /*return*/];
+    async uploadSeekableInternal(bodyFactory, size, options = {}) {
+        if (!options.blockSize) {
+            options.blockSize = 0;
+        }
+        if (options.blockSize < 0 || options.blockSize > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES) {
+            throw new RangeError(`blockSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES}`);
+        }
+        if (options.maxSingleShotSize !== 0 && !options.maxSingleShotSize) {
+            options.maxSingleShotSize = BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES;
+        }
+        if (options.maxSingleShotSize < 0 ||
+            options.maxSingleShotSize > BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES) {
+            throw new RangeError(`maxSingleShotSize option must be >= 0 and <= ${BLOCK_BLOB_MAX_UPLOAD_BLOB_BYTES}`);
+        }
+        if (options.blockSize === 0) {
+            if (size > BLOCK_BLOB_MAX_STAGE_BLOCK_BYTES * BLOCK_BLOB_MAX_BLOCKS) {
+                throw new RangeError(`${size} is too larger to upload to a block blob.`);
+            }
+            if (size > options.maxSingleShotSize) {
+                options.blockSize = Math.ceil(size / BLOCK_BLOB_MAX_BLOCKS);
+                if (options.blockSize < DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES) {
+                    options.blockSize = DEFAULT_BLOB_DOWNLOAD_BLOCK_BYTES;
                 }
+            }
+        }
+        if (!options.blobHTTPHeaders) {
+            options.blobHTTPHeaders = {};
+        }
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadSeekableInternal", options);
+        try {
+            if (size <= options.maxSingleShotSize) {
+                return await this.upload(bodyFactory(0, size), size, updatedOptions);
+            }
+            const numBlocks = Math.floor((size - 1) / options.blockSize) + 1;
+            if (numBlocks > BLOCK_BLOB_MAX_BLOCKS) {
+                throw new RangeError(`The buffer's size is too big or the BlockSize is too small;` +
+                    `the number of blocks must be <= ${BLOCK_BLOB_MAX_BLOCKS}`);
+            }
+            const blockList = [];
+            const blockIDPrefix = coreHttp.generateUuid();
+            let transferProgress = 0;
+            const batch = new Batch(options.concurrency);
+            for (let i = 0; i < numBlocks; i++) {
+                batch.addOperation(async () => {
+                    const blockID = generateBlockID(blockIDPrefix, i);
+                    const start = options.blockSize * i;
+                    const end = i === numBlocks - 1 ? size : start + options.blockSize;
+                    const contentLength = end - start;
+                    blockList.push(blockID);
+                    await this.stageBlock(blockID, bodyFactory(start, contentLength), contentLength, {
+                        abortSignal: options.abortSignal,
+                        conditions: options.conditions,
+                        encryptionScope: options.encryptionScope,
+                        tracingOptions: updatedOptions.tracingOptions
+                    });
+                    // Update progress after block is successfully uploaded to server, in case of block trying
+                    // TODO: Hook with convenience layer progress event in finer level
+                    transferProgress += contentLength;
+                    if (options.onProgress) {
+                        options.onProgress({
+                            loadedBytes: transferProgress
+                        });
+                    }
+                });
+            }
+            await batch.do();
+            return this.commitBlockList(blockList, updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -85604,45 +82942,29 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to Upload to Block Blob operation.
      * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadFile = function (filePath, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, size, e_32;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlockBlobClient-uploadFile", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        return [4 /*yield*/, fsStat(filePath)];
-                    case 2:
-                        size = (_b.sent()).size;
-                        return [4 /*yield*/, this.uploadSeekableInternal(function (offset, count) {
-                                return function () {
-                                    return fsCreateReadStream(filePath, {
-                                        autoClose: true,
-                                        end: count ? offset + count - 1 : Infinity,
-                                        start: offset
-                                    });
-                                };
-                            }, size, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
-                    case 3: return [2 /*return*/, _b.sent()];
-                    case 4:
-                        e_32 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_32.message
-                        });
-                        throw e_32;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
+    async uploadFile(filePath, options = {}) {
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadFile", options);
+        try {
+            const size = (await fsStat(filePath)).size;
+            return await this.uploadSeekableInternal((offset, count) => {
+                return () => fsCreateReadStream(filePath, {
+                    autoClose: true,
+                    end: count ? offset + count - 1 : Infinity,
+                    start: offset
+                });
+            }, size, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * ONLY AVAILABLE IN NODE.JS RUNTIME.
      *
@@ -85659,92 +82981,63 @@ var BlockBlobClient = /** @class */ (function (_super) {
      * @param options - Options to Upload Stream to Block Blob operation.
      * @returns Response data for the Blob Upload operation.
      */
-    BlockBlobClient.prototype.uploadStream = function (stream, bufferSize, maxConcurrency, options) {
-        if (bufferSize === void 0) { bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES; }
-        if (maxConcurrency === void 0) { maxConcurrency = 5; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, blockNum_1, blockIDPrefix_2, transferProgress_3, blockList_2, scheduler, e_33;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.blobHTTPHeaders) {
-                            options.blobHTTPHeaders = {};
-                        }
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("BlockBlobClient-uploadStream", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        blockNum_1 = 0;
-                        blockIDPrefix_2 = coreHttp.generateUuid();
-                        transferProgress_3 = 0;
-                        blockList_2 = [];
-                        scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, function (body, length) { return tslib.__awaiter(_this, void 0, void 0, function () {
-                            var blockID;
-                            return tslib.__generator(this, function (_a) {
-                                switch (_a.label) {
-                                    case 0:
-                                        blockID = generateBlockID(blockIDPrefix_2, blockNum_1);
-                                        blockList_2.push(blockID);
-                                        blockNum_1++;
-                                        return [4 /*yield*/, this.stageBlock(blockID, body, length, {
-                                                conditions: options.conditions,
-                                                encryptionScope: options.encryptionScope,
-                                                tracingOptions: updatedOptions.tracingOptions
-                                            })];
-                                    case 1:
-                                        _a.sent();
-                                        // Update progress after block is successfully uploaded to server, in case of block trying
-                                        transferProgress_3 += length;
-                                        if (options.onProgress) {
-                                            options.onProgress({ loadedBytes: transferProgress_3 });
-                                        }
-                                        return [2 /*return*/];
-                                }
-                            });
-                        }); }, 
-                        // concurrency should set a smaller value than maxConcurrency, which is helpful to
-                        // reduce the possibility when a outgoing handler waits for stream data, in
-                        // this situation, outgoing handlers are blocked.
-                        // Outgoing queue shouldn't be empty.
-                        Math.ceil((maxConcurrency / 4) * 3));
-                        return [4 /*yield*/, scheduler.do()];
-                    case 2:
-                        _b.sent();
-                        return [4 /*yield*/, this.commitBlockList(blockList_2, tslib.__assign(tslib.__assign({}, options), { tracingOptions: tslib.__assign(tslib.__assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }))];
-                    case 3: return [2 /*return*/, _b.sent()];
-                    case 4:
-                        e_33 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_33.message
-                        });
-                        throw e_33;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
+    async uploadStream(stream, bufferSize = DEFAULT_BLOCK_BUFFER_SIZE_BYTES, maxConcurrency = 5, options = {}) {
+        if (!options.blobHTTPHeaders) {
+            options.blobHTTPHeaders = {};
+        }
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("BlockBlobClient-uploadStream", options);
+        try {
+            let blockNum = 0;
+            const blockIDPrefix = coreHttp.generateUuid();
+            let transferProgress = 0;
+            const blockList = [];
+            const scheduler = new BufferScheduler(stream, bufferSize, maxConcurrency, async (body, length) => {
+                const blockID = generateBlockID(blockIDPrefix, blockNum);
+                blockList.push(blockID);
+                blockNum++;
+                await this.stageBlock(blockID, body, length, {
+                    conditions: options.conditions,
+                    encryptionScope: options.encryptionScope,
+                    tracingOptions: updatedOptions.tracingOptions
+                });
+                // Update progress after block is successfully uploaded to server, in case of block trying
+                transferProgress += length;
+                if (options.onProgress) {
+                    options.onProgress({ loadedBytes: transferProgress });
                 }
+            }, 
+            // concurrency should set a smaller value than maxConcurrency, which is helpful to
+            // reduce the possibility when a outgoing handler waits for stream data, in
+            // this situation, outgoing handlers are blocked.
+            // Outgoing queue shouldn't be empty.
+            Math.ceil((maxConcurrency / 4) * 3));
+            await scheduler.do();
+            return await this.commitBlockList(blockList, Object.assign(Object.assign({}, options), { tracingOptions: Object.assign(Object.assign({}, options.tracingOptions), convertTracingToRequestOptionsBase(updatedOptions)) }));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlockBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * PageBlobClient defines a set of operations applicable to page blobs.
  */
-var PageBlobClient = /** @class */ (function (_super) {
-    tslib.__extends(PageBlobClient, _super);
-    function PageBlobClient(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
-        var _this = this;
+class PageBlobClient extends BlobClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, blobNameOrOptions, options) {
         // In TypeScript we cannot simply pass all parameters to super() like below so have to duplicate the code instead.
         //   super(s, credentialOrPipelineOrContainerNameOrOptions, blobNameOrOptions, options);
-        var pipeline;
-        var url;
+        let pipeline;
+        let url;
         options = options || {};
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
@@ -85771,12 +83064,12 @@ var PageBlobClient = /** @class */ (function (_super) {
             blobNameOrOptions &&
             typeof blobNameOrOptions === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var blobName = blobNameOrOptions;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const blobName = blobNameOrOptions;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(appendToURLPath(extractedCreds.url, encodeURIComponent(containerName)), encodeURIComponent(blobName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -85796,9 +83089,8 @@ var PageBlobClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName and blobName parameters");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.pageBlobContext = new PageBlob(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.pageBlobContext = new PageBlob(this.storageClientContext);
     }
     /**
      * Creates a new PageBlobClient object identical to the source but with the
@@ -85808,9 +83100,9 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param snapshot - The snapshot timestamp.
      * @returns A new PageBlobClient object identical to the source but with the specified snapshot timestamp.
      */
-    PageBlobClient.prototype.withSnapshot = function (snapshot) {
+    withSnapshot(snapshot) {
         return new PageBlobClient(setURLParameter(this.url, URLConstants.Parameters.SNAPSHOT, snapshot.length === 0 ? undefined : snapshot), this.pipeline);
-    };
+    }
     /**
      * Creates a page blob of the specified length. Call uploadPages to upload data
      * data to a page blob.
@@ -85820,37 +83112,25 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Create operation.
      * @returns Response data for the Page Blob Create operation.
      */
-    PageBlobClient.prototype.create = function (size, options) {
+    async create(size, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_34;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-create", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.create(0, size, tslib.__assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, blobSequenceNumber: options.blobSequenceNumber, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_34 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_34.message
-                        });
-                        throw e_34;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-create", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.create(0, size, Object.assign({ abortSignal: options.abortSignal, blobHttpHeaders: options.blobHTTPHeaders, blobSequenceNumber: options.blobSequenceNumber, leaseAccessConditions: options.conditions, metadata: options.metadata, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope, tier: toAccessTier(options.tier), blobTagsString: toBlobTagsString(options.tags) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a page blob of the specified length. Call uploadPages to upload data
      * data to a page blob. If the blob with the same name already exists, the content
@@ -85860,46 +83140,33 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param size - size of the page blob.
      * @param options -
      */
-    PageBlobClient.prototype.createIfNotExists = function (size, options) {
+    async createIfNotExists(size, options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, conditions, res, e_35;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("PageBlobClient-createIfNotExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        conditions = { ifNoneMatch: ETagAny };
-                        return [4 /*yield*/, this.create(size, tslib.__assign(tslib.__assign({}, options), { conditions: conditions, tracingOptions: updatedOptions.tracingOptions }))];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_35 = _d.sent();
-                        if (((_a = e_35.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when creating a blob only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_35.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_35.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_35.message
-                        });
-                        throw e_35;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("PageBlobClient-createIfNotExists", options);
+        try {
+            const conditions = { ifNoneMatch: ETagAny };
+            const res = await this.create(size, Object.assign(Object.assign({}, options), { conditions, tracingOptions: updatedOptions.tracingOptions }));
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "BlobAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a blob only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Writes 1 or more pages to the page blob. The start and end offsets must be a multiple of 512.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-page
@@ -85910,39 +83177,27 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Upload Pages operation.
      * @returns Response data for the Page Blob Upload Pages operation.
      */
-    PageBlobClient.prototype.uploadPages = function (body, offset, count, options) {
+    async uploadPages(body, offset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_36;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-uploadPages", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.uploadPages(count, body, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
-                                    onUploadProgress: options.onProgress
-                                }, range: rangeToString({ offset: offset, count: count }), sequenceNumberAccessConditions: options.conditions, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_36 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_36.message
-                        });
-                        throw e_36;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-uploadPages", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.uploadPages(count, body, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), requestOptions: {
+                    onUploadProgress: options.onProgress
+                }, range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, transactionalContentMD5: options.transactionalContentMD5, transactionalContentCrc64: options.transactionalContentCrc64, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Upload Pages operation writes a range of pages to a page blob where the
      * contents are read from a URL.
@@ -85954,43 +83209,31 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param count - Number of bytes to be uploaded from source page blob
      * @param options -
      */
-    PageBlobClient.prototype.uploadPagesFromURL = function (sourceURL, sourceOffset, destOffset, count, options) {
+    async uploadPagesFromURL(sourceURL, sourceOffset, destOffset, count, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_37;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        options.sourceConditions = options.sourceConditions || {};
-                        _b = createSpan("PageBlobClient-uploadPagesFromURL", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
-                        return [4 /*yield*/, this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count: count }), 0, rangeToString({ offset: destOffset, count: count }), tslib.__assign({ abortSignal: options.abortSignal, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, sequenceNumberAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
-                                    sourceIfMatch: options.sourceConditions.ifMatch,
-                                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
-                                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
-                                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
-                                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_37 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_37.message
-                        });
-                        throw e_37;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        options.sourceConditions = options.sourceConditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-uploadPagesFromURL", options);
+        try {
+            ensureCpkIfSpecified(options.customerProvidedKey, this.isHttps);
+            return await this.pageBlobContext.uploadPagesFromURL(sourceURL, rangeToString({ offset: sourceOffset, count }), 0, rangeToString({ offset: destOffset, count }), Object.assign({ abortSignal: options.abortSignal, sourceContentMD5: options.sourceContentMD5, sourceContentCrc64: options.sourceContentCrc64, leaseAccessConditions: options.conditions, sequenceNumberAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), sourceModifiedAccessConditions: {
+                    sourceIfMatch: options.sourceConditions.ifMatch,
+                    sourceIfModifiedSince: options.sourceConditions.ifModifiedSince,
+                    sourceIfNoneMatch: options.sourceConditions.ifNoneMatch,
+                    sourceIfUnmodifiedSince: options.sourceConditions.ifUnmodifiedSince
+                }, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Frees the specified pages from the page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/put-page
@@ -86000,37 +83243,24 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Clear Pages operation.
      * @returns Response data for the Page Blob Clear Pages operation.
      */
-    PageBlobClient.prototype.clearPages = function (offset, count, options) {
+    async clearPages(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_38;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-clearPages", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.clearPages(0, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset: offset, count: count }), sequenceNumberAccessConditions: options.conditions, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_38 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_38.message
-                        });
-                        throw e_38;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-clearPages", options);
+        try {
+            return await this.pageBlobContext.clearPages(0, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }), sequenceNumberAccessConditions: options.conditions, cpkInfo: options.customerProvidedKey, encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns the list of valid page ranges for a page blob or snapshot of a page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
@@ -86040,39 +83270,26 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Get Ranges operation.
      * @returns Response data for the Page Blob Get Ranges operation.
      */
-    PageBlobClient.prototype.getPageRanges = function (offset, count, options) {
+    async getPageRanges(offset = 0, count, options = {}) {
         var _a;
-        if (offset === void 0) { offset = 0; }
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_39;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-getPageRanges", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRanges(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset: offset, count: count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_39 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_39.message
-                        });
-                        throw e_39;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-getPageRanges", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRanges(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the collection of page ranges that differ between a specified snapshot and this page blob.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
@@ -86083,38 +83300,26 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Get Page Ranges Diff operation.
      * @returns Response data for the Page Blob Get Page Range Diff operation.
      */
-    PageBlobClient.prototype.getPageRangesDiff = function (offset, count, prevSnapshot, options) {
+    async getPageRangesDiff(offset, count, prevSnapshot, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_40;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-getPageRangesDiff", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRangesDiff(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevsnapshot: prevSnapshot, range: rangeToString({ offset: offset, count: count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_40 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_40.message
-                        });
-                        throw e_40;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-getPageRangesDiff", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevsnapshot: prevSnapshot, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the collection of page ranges that differ between a specified snapshot and this page blob for managed disks.
      * @see https://docs.microsoft.com/rest/api/storageservices/get-page-ranges
@@ -86125,38 +83330,26 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Get Page Ranges Diff operation.
      * @returns Response data for the Page Blob Get Page Range Diff operation.
      */
-    PageBlobClient.prototype.getPageRangesDiffForManagedDisks = function (offset, count, prevSnapshotUrl, options) {
+    async getPageRangesDiffForManagedDisks(offset, count, prevSnapshotUrl, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_41;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-GetPageRangesDiffForManagedDisks", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext
-                                .getPageRangesDiff(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevSnapshotUrl: prevSnapshotUrl, range: rangeToString({ offset: offset, count: count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
-                                .then(rangeResponseFromModel)];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_41 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_41.message
-                        });
-                        throw e_41;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-GetPageRangesDiffForManagedDisks", options);
+        try {
+            return await this.pageBlobContext
+                .getPageRangesDiff(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), prevSnapshotUrl, range: rangeToString({ offset, count }) }, convertTracingToRequestOptionsBase(updatedOptions)))
+                .then(rangeResponseFromModel);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Resizes the page blob to the specified size (which must be a multiple of 512).
      * @see https://docs.microsoft.com/rest/api/storageservices/set-blob-properties
@@ -86165,36 +83358,24 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Resize operation.
      * @returns Response data for the Page Blob Resize operation.
      */
-    PageBlobClient.prototype.resize = function (size, options) {
+    async resize(size, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_42;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-resize", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.resize(size, tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_42 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_42.message
-                        });
-                        throw e_42;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-resize", options);
+        try {
+            return await this.pageBlobContext.resize(size, Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }), encryptionScope: options.encryptionScope }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets a page blob's sequence number.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-properties
@@ -86204,36 +83385,24 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Update Sequence Number operation.
      * @returns Response data for the Page Blob Update Sequence Number operation.
      */
-    PageBlobClient.prototype.updateSequenceNumber = function (sequenceNumberAction, sequenceNumber, options) {
+    async updateSequenceNumber(sequenceNumberAction, sequenceNumber, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_43;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _b = createSpan("PageBlobClient-updateSequenceNumber", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, tslib.__assign({ abortSignal: options.abortSignal, blobSequenceNumber: sequenceNumber, leaseAccessConditions: options.conditions, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_43 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_43.message
-                        });
-                        throw e_43;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("PageBlobClient-updateSequenceNumber", options);
+        try {
+            return await this.pageBlobContext.updateSequenceNumber(sequenceNumberAction, Object.assign({ abortSignal: options.abortSignal, blobSequenceNumber: sequenceNumber, leaseAccessConditions: options.conditions, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Begins an operation to start an incremental copy from one page blob's snapshot to this page blob.
      * The snapshot is copied such that only the differential changes between the previously
@@ -86247,69 +83416,46 @@ var PageBlobClient = /** @class */ (function (_super) {
      * @param options - Options to the Page Blob Copy Incremental operation.
      * @returns Response data for the Page Blob Copy Incremental operation.
      */
-    PageBlobClient.prototype.startCopyIncremental = function (copySource, options) {
+    async startCopyIncremental(copySource, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, e_44;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("PageBlobClient-startCopyIncremental", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.pageBlobContext.copyIncremental(copySource, tslib.__assign({ abortSignal: options.abortSignal, modifiedAccessConditions: tslib.__assign(tslib.__assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_44 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_44.message
-                        });
-                        throw e_44;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("PageBlobClient-startCopyIncremental", options);
+        try {
+            return await this.pageBlobContext.copyIncremental(copySource, Object.assign({ abortSignal: options.abortSignal, modifiedAccessConditions: Object.assign(Object.assign({}, options.conditions), { ifTags: (_a = options.conditions) === null || _a === void 0 ? void 0 : _a.tagConditions }) }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return PageBlobClient;
-}(BlobClient));
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
-function getBodyAsText(batchResponse) {
-    return tslib.__awaiter(this, void 0, void 0, function () {
-        var buffer, responseLength;
-        return tslib.__generator(this, function (_a) {
-            switch (_a.label) {
-                case 0:
-                    buffer = Buffer.alloc(BATCH_MAX_PAYLOAD_IN_BYTES);
-                    return [4 /*yield*/, streamToBuffer2(batchResponse.readableStreamBody, buffer)];
-                case 1:
-                    responseLength = _a.sent();
-                    // Slice the buffer to trim the empty ending.
-                    buffer = buffer.slice(0, responseLength);
-                    return [2 /*return*/, buffer.toString()];
-            }
-        });
-    });
+async function getBodyAsText(batchResponse) {
+    let buffer = Buffer.alloc(BATCH_MAX_PAYLOAD_IN_BYTES);
+    const responseLength = await streamToBuffer2(batchResponse.readableStreamBody, buffer);
+    // Slice the buffer to trim the empty ending.
+    buffer = buffer.slice(0, responseLength);
+    return buffer.toString();
 }
 function utf8ByteLength(str) {
     return Buffer.byteLength(str);
 }
 
 // Copyright (c) Microsoft Corporation.
-var HTTP_HEADER_DELIMITER = ": ";
-var SPACE_DELIMITER = " ";
-var NOT_FOUND = -1;
+const HTTP_HEADER_DELIMITER = ": ";
+const SPACE_DELIMITER = " ";
+const NOT_FOUND = -1;
 /**
  * Util class for parsing batch response.
  */
-var BatchResponseParser = /** @class */ (function () {
-    function BatchResponseParser(batchResponse, subRequests) {
+class BatchResponseParser {
+    constructor(batchResponse, subRequests) {
         if (!batchResponse || !batchResponse.contentType) {
             // In special case(reported), server may return invalid content-type which could not be parsed.
             throw new RangeError("batchResponse is malformed or doesn't contain valid content-type.");
@@ -86321,129 +83467,119 @@ var BatchResponseParser = /** @class */ (function () {
         this.batchResponse = batchResponse;
         this.subRequests = subRequests;
         this.responseBatchBoundary = this.batchResponse.contentType.split("=")[1];
-        this.perResponsePrefix = "--" + this.responseBatchBoundary + HTTP_LINE_ENDING;
-        this.batchResponseEnding = "--" + this.responseBatchBoundary + "--";
+        this.perResponsePrefix = `--${this.responseBatchBoundary}${HTTP_LINE_ENDING}`;
+        this.batchResponseEnding = `--${this.responseBatchBoundary}--`;
     }
     // For example of response, please refer to https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#response
-    BatchResponseParser.prototype.parseBatchResponse = function () {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var responseBodyAsText, subResponses, subResponseCount, deserializedSubResponses, subResponsesSucceededCount, subResponsesFailedCount, index, subResponse, deserializedSubResponse, responseLines, subRespHeaderStartFound, subRespHeaderEndFound, subRespFailed, contentId, _i, responseLines_1, responseLine, tokens, tokens;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse
-                        // sub request's response.
-                        if (this.batchResponse._response.status != HTTPURLConnection.HTTP_ACCEPTED) {
-                            throw new Error("Invalid state: batch request failed with status: '" + this.batchResponse._response.status + "'.");
-                        }
-                        return [4 /*yield*/, getBodyAsText(this.batchResponse)];
-                    case 1:
-                        responseBodyAsText = _a.sent();
-                        subResponses = responseBodyAsText
-                            .split(this.batchResponseEnding)[0] // string after ending is useless
-                            .split(this.perResponsePrefix)
-                            .slice(1);
-                        subResponseCount = subResponses.length;
-                        // Defensive coding in case of potential error parsing.
-                        // Note: subResponseCount == 1 is special case where sub request is invalid.
-                        // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.
-                        // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.
-                        if (subResponseCount != this.subRequests.size && subResponseCount != 1) {
-                            throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.");
-                        }
-                        deserializedSubResponses = new Array(subResponseCount);
-                        subResponsesSucceededCount = 0;
-                        subResponsesFailedCount = 0;
-                        // Parse sub subResponses.
-                        for (index = 0; index < subResponseCount; index++) {
-                            subResponse = subResponses[index];
-                            deserializedSubResponse = {};
-                            deserializedSubResponse.headers = new coreHttp.HttpHeaders();
-                            responseLines = subResponse.split("" + HTTP_LINE_ENDING);
-                            subRespHeaderStartFound = false;
-                            subRespHeaderEndFound = false;
-                            subRespFailed = false;
-                            contentId = NOT_FOUND;
-                            for (_i = 0, responseLines_1 = responseLines; _i < responseLines_1.length; _i++) {
-                                responseLine = responseLines_1[_i];
-                                if (!subRespHeaderStartFound) {
-                                    // Convention line to indicate content ID
-                                    if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {
-                                        contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);
-                                    }
-                                    // Http version line with status code indicates the start of sub request's response.
-                                    // Example: HTTP/1.1 202 Accepted
-                                    if (responseLine.startsWith(HTTP_VERSION_1_1)) {
-                                        subRespHeaderStartFound = true;
-                                        tokens = responseLine.split(SPACE_DELIMITER);
-                                        deserializedSubResponse.status = parseInt(tokens[1]);
-                                        deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);
-                                    }
-                                    continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *
-                                }
-                                if (responseLine.trim() === "") {
-                                    // Sub response's header start line already found, and the first empty line indicates header end line found.
-                                    if (!subRespHeaderEndFound) {
-                                        subRespHeaderEndFound = true;
-                                    }
-                                    continue; // Skip empty line
-                                }
-                                // Note: when code reach here, it indicates subRespHeaderStartFound == true
-                                if (!subRespHeaderEndFound) {
-                                    if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {
-                                        // Defensive coding to prevent from missing valuable lines.
-                                        throw new Error("Invalid state: find non-empty line '" + responseLine + "' without HTTP header delimiter '" + HTTP_HEADER_DELIMITER + "'.");
-                                    }
-                                    tokens = responseLine.split(HTTP_HEADER_DELIMITER);
-                                    deserializedSubResponse.headers.set(tokens[0], tokens[1]);
-                                    if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {
-                                        deserializedSubResponse.errorCode = tokens[1];
-                                        subRespFailed = true;
-                                    }
-                                }
-                                else {
-                                    // Assemble body of sub response.
-                                    if (!deserializedSubResponse.bodyAsText) {
-                                        deserializedSubResponse.bodyAsText = "";
-                                    }
-                                    deserializedSubResponse.bodyAsText += responseLine;
-                                }
-                            } // Inner for end
-                            // The response will contain the Content-ID header for each corresponding subrequest response to use for tracking.
-                            // The Content-IDs are set to a valid index in the subrequests we sent. In the status code 202 path, we could expect it
-                            // to be 1-1 mapping from the [0, subRequests.size) to the Content-IDs returned. If not, we simply don't return that
-                            // unexpected subResponse in the parsed reponse and we can always look it up in the raw response for debugging purpose.
-                            if (contentId != NOT_FOUND &&
-                                Number.isInteger(contentId) &&
-                                contentId >= 0 &&
-                                contentId < this.subRequests.size &&
-                                deserializedSubResponses[contentId] === undefined) {
-                                deserializedSubResponse._request = this.subRequests.get(contentId);
-                                deserializedSubResponses[contentId] = deserializedSubResponse;
-                            }
-                            else {
-                                logger.error("subResponses[" + index + "] is dropped as the Content-ID is not found or invalid, Content-ID: " + contentId);
-                            }
-                            if (subRespFailed) {
-                                subResponsesFailedCount++;
-                            }
-                            else {
-                                subResponsesSucceededCount++;
-                            }
-                        }
-                        return [2 /*return*/, {
-                                subResponses: deserializedSubResponses,
-                                subResponsesSucceededCount: subResponsesSucceededCount,
-                                subResponsesFailedCount: subResponsesFailedCount
-                            }];
+    async parseBatchResponse() {
+        // When logic reach here, suppose batch request has already succeeded with 202, so we can further parse
+        // sub request's response.
+        if (this.batchResponse._response.status != HTTPURLConnection.HTTP_ACCEPTED) {
+            throw new Error(`Invalid state: batch request failed with status: '${this.batchResponse._response.status}'.`);
+        }
+        const responseBodyAsText = await getBodyAsText(this.batchResponse);
+        const subResponses = responseBodyAsText
+            .split(this.batchResponseEnding)[0] // string after ending is useless
+            .split(this.perResponsePrefix)
+            .slice(1); // string before first response boundary is useless
+        const subResponseCount = subResponses.length;
+        // Defensive coding in case of potential error parsing.
+        // Note: subResponseCount == 1 is special case where sub request is invalid.
+        // We try to prevent such cases through early validation, e.g. validate sub request count >= 1.
+        // While in unexpected sub request invalid case, we allow sub response to be parsed and return to user.
+        if (subResponseCount != this.subRequests.size && subResponseCount != 1) {
+            throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.");
+        }
+        const deserializedSubResponses = new Array(subResponseCount);
+        let subResponsesSucceededCount = 0;
+        let subResponsesFailedCount = 0;
+        // Parse sub subResponses.
+        for (let index = 0; index < subResponseCount; index++) {
+            const subResponse = subResponses[index];
+            const deserializedSubResponse = {};
+            deserializedSubResponse.headers = new coreHttp.HttpHeaders();
+            const responseLines = subResponse.split(`${HTTP_LINE_ENDING}`);
+            let subRespHeaderStartFound = false;
+            let subRespHeaderEndFound = false;
+            let subRespFailed = false;
+            let contentId = NOT_FOUND;
+            for (const responseLine of responseLines) {
+                if (!subRespHeaderStartFound) {
+                    // Convention line to indicate content ID
+                    if (responseLine.startsWith(HeaderConstants.CONTENT_ID)) {
+                        contentId = parseInt(responseLine.split(HTTP_HEADER_DELIMITER)[1]);
+                    }
+                    // Http version line with status code indicates the start of sub request's response.
+                    // Example: HTTP/1.1 202 Accepted
+                    if (responseLine.startsWith(HTTP_VERSION_1_1)) {
+                        subRespHeaderStartFound = true;
+                        const tokens = responseLine.split(SPACE_DELIMITER);
+                        deserializedSubResponse.status = parseInt(tokens[1]);
+                        deserializedSubResponse.statusMessage = tokens.slice(2).join(SPACE_DELIMITER);
+                    }
+                    continue; // Skip convention headers not specifically for sub request i.e. Content-Type: application/http and Content-ID: *
                 }
-            });
-        });
-    };
-    return BatchResponseParser;
-}());
+                if (responseLine.trim() === "") {
+                    // Sub response's header start line already found, and the first empty line indicates header end line found.
+                    if (!subRespHeaderEndFound) {
+                        subRespHeaderEndFound = true;
+                    }
+                    continue; // Skip empty line
+                }
+                // Note: when code reach here, it indicates subRespHeaderStartFound == true
+                if (!subRespHeaderEndFound) {
+                    if (responseLine.indexOf(HTTP_HEADER_DELIMITER) === -1) {
+                        // Defensive coding to prevent from missing valuable lines.
+                        throw new Error(`Invalid state: find non-empty line '${responseLine}' without HTTP header delimiter '${HTTP_HEADER_DELIMITER}'.`);
+                    }
+                    // Parse headers of sub response.
+                    const tokens = responseLine.split(HTTP_HEADER_DELIMITER);
+                    deserializedSubResponse.headers.set(tokens[0], tokens[1]);
+                    if (tokens[0] === HeaderConstants.X_MS_ERROR_CODE) {
+                        deserializedSubResponse.errorCode = tokens[1];
+                        subRespFailed = true;
+                    }
+                }
+                else {
+                    // Assemble body of sub response.
+                    if (!deserializedSubResponse.bodyAsText) {
+                        deserializedSubResponse.bodyAsText = "";
+                    }
+                    deserializedSubResponse.bodyAsText += responseLine;
+                }
+            } // Inner for end
+            // The response will contain the Content-ID header for each corresponding subrequest response to use for tracking.
+            // The Content-IDs are set to a valid index in the subrequests we sent. In the status code 202 path, we could expect it
+            // to be 1-1 mapping from the [0, subRequests.size) to the Content-IDs returned. If not, we simply don't return that
+            // unexpected subResponse in the parsed reponse and we can always look it up in the raw response for debugging purpose.
+            if (contentId != NOT_FOUND &&
+                Number.isInteger(contentId) &&
+                contentId >= 0 &&
+                contentId < this.subRequests.size &&
+                deserializedSubResponses[contentId] === undefined) {
+                deserializedSubResponse._request = this.subRequests.get(contentId);
+                deserializedSubResponses[contentId] = deserializedSubResponse;
+            }
+            else {
+                logger.error(`subResponses[${index}] is dropped as the Content-ID is not found or invalid, Content-ID: ${contentId}`);
+            }
+            if (subRespFailed) {
+                subResponsesFailedCount++;
+            }
+            else {
+                subResponsesSucceededCount++;
+            }
+        }
+        return {
+            subResponses: deserializedSubResponses,
+            subResponsesSucceededCount: subResponsesSucceededCount,
+            subResponsesFailedCount: subResponsesFailedCount
+        };
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
+// Licensed under the MIT license.
 var MutexLockStatus;
 (function (MutexLockStatus) {
     MutexLockStatus[MutexLockStatus["LOCKED"] = 0] = "LOCKED";
@@ -86452,82 +83588,68 @@ var MutexLockStatus;
 /**
  * An async mutex lock.
  */
-var Mutex = /** @class */ (function () {
-    function Mutex() {
-    }
+class Mutex {
     /**
      * Lock for a specific key. If the lock has been acquired by another customer, then
      * will wait until getting the lock.
      *
      * @param key - lock key
      */
-    Mutex.lock = function (key) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve) {
-                        if (_this.keys[key] === undefined || _this.keys[key] === MutexLockStatus.UNLOCKED) {
-                            _this.keys[key] = MutexLockStatus.LOCKED;
-                            resolve();
-                        }
-                        else {
-                            _this.onUnlockEvent(key, function () {
-                                _this.keys[key] = MutexLockStatus.LOCKED;
-                                resolve();
-                            });
-                        }
-                    })];
-            });
+    static async lock(key) {
+        return new Promise((resolve) => {
+            if (this.keys[key] === undefined || this.keys[key] === MutexLockStatus.UNLOCKED) {
+                this.keys[key] = MutexLockStatus.LOCKED;
+                resolve();
+            }
+            else {
+                this.onUnlockEvent(key, () => {
+                    this.keys[key] = MutexLockStatus.LOCKED;
+                    resolve();
+                });
+            }
         });
-    };
+    }
     /**
      * Unlock a key.
      *
      * @param key -
      */
-    Mutex.unlock = function (key) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _this = this;
-            return tslib.__generator(this, function (_a) {
-                return [2 /*return*/, new Promise(function (resolve) {
-                        if (_this.keys[key] === MutexLockStatus.LOCKED) {
-                            _this.emitUnlockEvent(key);
-                        }
-                        delete _this.keys[key];
-                        resolve();
-                    })];
-            });
+    static async unlock(key) {
+        return new Promise((resolve) => {
+            if (this.keys[key] === MutexLockStatus.LOCKED) {
+                this.emitUnlockEvent(key);
+            }
+            delete this.keys[key];
+            resolve();
         });
-    };
-    Mutex.onUnlockEvent = function (key, handler) {
+    }
+    static onUnlockEvent(key, handler) {
         if (this.listeners[key] === undefined) {
             this.listeners[key] = [handler];
         }
         else {
             this.listeners[key].push(handler);
         }
-    };
-    Mutex.emitUnlockEvent = function (key) {
-        var _this = this;
+    }
+    static emitUnlockEvent(key) {
         if (this.listeners[key] !== undefined && this.listeners[key].length > 0) {
-            var handler_1 = this.listeners[key].shift();
-            setImmediate(function () {
-                handler_1.call(_this);
+            const handler = this.listeners[key].shift();
+            setImmediate(() => {
+                handler.call(this);
             });
         }
-    };
-    Mutex.keys = {};
-    Mutex.listeners = {};
-    return Mutex;
-}());
+    }
+}
+Mutex.keys = {};
+Mutex.listeners = {};
 
 // Copyright (c) Microsoft Corporation.
 /**
  * A BlobBatch represents an aggregated set of operations on blobs.
  * Currently, only `delete` and `setAccessTier` are supported.
  */
-var BlobBatch = /** @class */ (function () {
-    function BlobBatch() {
+class BlobBatch {
+    constructor() {
         this.batch = "batch";
         this.batchRequest = new InnerBatchRequest();
     }
@@ -86536,203 +83658,151 @@ var BlobBatch = /** @class */ (function () {
      * The value must be multipart/mixed with a batch boundary.
      * Example: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252
      */
-    BlobBatch.prototype.getMultiPartContentType = function () {
+    getMultiPartContentType() {
         return this.batchRequest.getMultipartContentType();
-    };
+    }
     /**
      * Get assembled HTTP request body for sub requests.
      */
-    BlobBatch.prototype.getHttpRequestBody = function () {
+    getHttpRequestBody() {
         return this.batchRequest.getHttpRequestBody();
-    };
+    }
     /**
      * Get sub requests that are added into the batch request.
      */
-    BlobBatch.prototype.getSubRequests = function () {
+    getSubRequests() {
         return this.batchRequest.getSubRequests();
-    };
-    BlobBatch.prototype.addSubRequestInternal = function (subRequest, assembleSubRequestFunc) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, Mutex.lock(this.batch)];
-                    case 1:
-                        _a.sent();
-                        _a.label = 2;
-                    case 2:
-                        _a.trys.push([2, , 4, 6]);
-                        this.batchRequest.preAddSubRequest(subRequest);
-                        return [4 /*yield*/, assembleSubRequestFunc()];
-                    case 3:
-                        _a.sent();
-                        this.batchRequest.postAddSubRequest(subRequest);
-                        return [3 /*break*/, 6];
-                    case 4: return [4 /*yield*/, Mutex.unlock(this.batch)];
-                    case 5:
-                        _a.sent();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
-            });
-        });
-    };
-    BlobBatch.prototype.setBatchType = function (batchType) {
+    }
+    async addSubRequestInternal(subRequest, assembleSubRequestFunc) {
+        await Mutex.lock(this.batch);
+        try {
+            this.batchRequest.preAddSubRequest(subRequest);
+            await assembleSubRequestFunc();
+            this.batchRequest.postAddSubRequest(subRequest);
+        }
+        finally {
+            await Mutex.unlock(this.batch);
+        }
+    }
+    setBatchType(batchType) {
         if (!this.batchType) {
             this.batchType = batchType;
         }
         if (this.batchType !== batchType) {
-            throw new RangeError("BlobBatch only supports one operation type per batch and it already is being used for " + this.batchType + " operations.");
+            throw new RangeError(`BlobBatch only supports one operation type per batch and it already is being used for ${this.batchType} operations.`);
         }
-    };
-    BlobBatch.prototype.deleteBlob = function (urlOrBlobClient, credentialOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var url, credential, _a, span, updatedOptions, e_1;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (typeof urlOrBlobClient === "string" &&
-                            ((coreHttp.isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||
-                                credentialOrOptions instanceof AnonymousCredential ||
-                                coreHttp.isTokenCredential(credentialOrOptions))) {
-                            // First overload
-                            url = urlOrBlobClient;
-                            credential = credentialOrOptions;
-                        }
-                        else if (urlOrBlobClient instanceof BlobClient) {
-                            // Second overload
-                            url = urlOrBlobClient.url;
-                            credential = urlOrBlobClient.credential;
-                            options = credentialOrOptions;
-                        }
-                        else {
-                            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
-                        }
-                        if (!options) {
-                            options = {};
-                        }
-                        _a = createSpan("BatchDeleteRequest-addSubRequest", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        this.setBatchType("delete");
-                        return [4 /*yield*/, this.addSubRequestInternal({
-                                url: url,
-                                credential: credential
-                            }, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(updatedOptions)];
-                                        case 1:
-                                            _a.sent();
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); })];
-                    case 2:
-                        _b.sent();
-                        return [3 /*break*/, 5];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    }
+    async deleteBlob(urlOrBlobClient, credentialOrOptions, options) {
+        let url;
+        let credential;
+        if (typeof urlOrBlobClient === "string" &&
+            ((coreHttp.isNode && credentialOrOptions instanceof StorageSharedKeyCredential) ||
+                credentialOrOptions instanceof AnonymousCredential ||
+                coreHttp.isTokenCredential(credentialOrOptions))) {
+            // First overload
+            url = urlOrBlobClient;
+            credential = credentialOrOptions;
+        }
+        else if (urlOrBlobClient instanceof BlobClient) {
+            // Second overload
+            url = urlOrBlobClient.url;
+            credential = urlOrBlobClient.credential;
+            options = credentialOrOptions;
+        }
+        else {
+            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
+        }
+        if (!options) {
+            options = {};
+        }
+        const { span, updatedOptions } = createSpan("BatchDeleteRequest-addSubRequest", options);
+        try {
+            this.setBatchType("delete");
+            await this.addSubRequestInternal({
+                url: url,
+                credential: credential
+            }, async () => {
+                await new BlobClient(url, this.batchRequest.createPipeline(credential)).delete(updatedOptions);
             });
-        });
-    };
-    BlobBatch.prototype.setBlobAccessTier = function (urlOrBlobClient, credentialOrTier, tierOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var url, credential, tier, _a, span, updatedOptions, e_2;
-            var _this = this;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (typeof urlOrBlobClient === "string" &&
-                            ((coreHttp.isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||
-                                credentialOrTier instanceof AnonymousCredential ||
-                                coreHttp.isTokenCredential(credentialOrTier))) {
-                            // First overload
-                            url = urlOrBlobClient;
-                            credential = credentialOrTier;
-                            tier = tierOrOptions;
-                        }
-                        else if (urlOrBlobClient instanceof BlobClient) {
-                            // Second overload
-                            url = urlOrBlobClient.url;
-                            credential = urlOrBlobClient.credential;
-                            tier = credentialOrTier;
-                            options = tierOrOptions;
-                        }
-                        else {
-                            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
-                        }
-                        if (!options) {
-                            options = {};
-                        }
-                        _a = createSpan("BatchSetTierRequest-addSubRequest", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        this.setBatchType("setAccessTier");
-                        return [4 /*yield*/, this.addSubRequestInternal({
-                                url: url,
-                                credential: credential
-                            }, function () { return tslib.__awaiter(_this, void 0, void 0, function () {
-                                return tslib.__generator(this, function (_a) {
-                                    switch (_a.label) {
-                                        case 0: return [4 /*yield*/, new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, updatedOptions)];
-                                        case 1:
-                                            _a.sent();
-                                            return [2 /*return*/];
-                                    }
-                                });
-                            }); })];
-                    case 2:
-                        _b.sent();
-                        return [3 /*break*/, 5];
-                    case 3:
-                        e_2 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlobBatch;
-}());
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+    async setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options) {
+        let url;
+        let credential;
+        let tier;
+        if (typeof urlOrBlobClient === "string" &&
+            ((coreHttp.isNode && credentialOrTier instanceof StorageSharedKeyCredential) ||
+                credentialOrTier instanceof AnonymousCredential ||
+                coreHttp.isTokenCredential(credentialOrTier))) {
+            // First overload
+            url = urlOrBlobClient;
+            credential = credentialOrTier;
+            tier = tierOrOptions;
+        }
+        else if (urlOrBlobClient instanceof BlobClient) {
+            // Second overload
+            url = urlOrBlobClient.url;
+            credential = urlOrBlobClient.credential;
+            tier = credentialOrTier;
+            options = tierOrOptions;
+        }
+        else {
+            throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.");
+        }
+        if (!options) {
+            options = {};
+        }
+        const { span, updatedOptions } = createSpan("BatchSetTierRequest-addSubRequest", options);
+        try {
+            this.setBatchType("setAccessTier");
+            await this.addSubRequestInternal({
+                url: url,
+                credential: credential
+            }, async () => {
+                await new BlobClient(url, this.batchRequest.createPipeline(credential)).setAccessTier(tier, updatedOptions);
+            });
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 /**
  * Inner batch request class which is responsible for assembling and serializing sub requests.
  * See https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch#request-body for how requests are assembled.
  */
-var InnerBatchRequest = /** @class */ (function () {
-    function InnerBatchRequest() {
+class InnerBatchRequest {
+    constructor() {
         this.operationCount = 0;
         this.body = "";
-        var tempGuid = coreHttp.generateUuid();
+        const tempGuid = coreHttp.generateUuid();
         // batch_{batchid}
-        this.boundary = "batch_" + tempGuid;
+        this.boundary = `batch_${tempGuid}`;
         // --batch_{batchid}
         // Content-Type: application/http
         // Content-Transfer-Encoding: binary
-        this.subRequestPrefix = "--" + this.boundary + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TYPE + ": application/http" + HTTP_LINE_ENDING + HeaderConstants.CONTENT_TRANSFER_ENCODING + ": binary";
+        this.subRequestPrefix = `--${this.boundary}${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TYPE}: application/http${HTTP_LINE_ENDING}${HeaderConstants.CONTENT_TRANSFER_ENCODING}: binary`;
         // multipart/mixed; boundary=batch_{batchid}
-        this.multipartContentType = "multipart/mixed; boundary=" + this.boundary;
+        this.multipartContentType = `multipart/mixed; boundary=${this.boundary}`;
         // --batch_{batchid}--
-        this.batchRequestEnding = "--" + this.boundary + "--";
+        this.batchRequestEnding = `--${this.boundary}--`;
         this.subRequests = new Map();
     }
     /**
@@ -86742,10 +83812,10 @@ var InnerBatchRequest = /** @class */ (function () {
      * and intercept request from going to wire.
      * @param credential -  Such as AnonymousCredential, StorageSharedKeyCredential or any credential from the `@azure/identity` package to authenticate requests to the service. You can also provide an object that implements the TokenCredential interface. If not specified, AnonymousCredential is used.
      */
-    InnerBatchRequest.prototype.createPipeline = function (credential) {
-        var isAnonymousCreds = credential instanceof AnonymousCredential;
-        var policyFactoryLength = 3 + (isAnonymousCreds ? 0 : 1); // [deserializationPolicy, BatchHeaderFilterPolicyFactory, (Optional)Credential, BatchRequestAssemblePolicyFactory]
-        var factories = new Array(policyFactoryLength);
+    createPipeline(credential) {
+        const isAnonymousCreds = credential instanceof AnonymousCredential;
+        const policyFactoryLength = 3 + (isAnonymousCreds ? 0 : 1); // [deserializationPolicy, BatchHeaderFilterPolicyFactory, (Optional)Credential, BatchRequestAssemblePolicyFactory]
+        const factories = new Array(policyFactoryLength);
         factories[0] = coreHttp.deserializationPolicy(); // Default deserializationPolicy is provided by protocol layer
         factories[1] = new BatchHeaderFilterPolicyFactory(); // Use batch header filter policy to exclude unnecessary headers
         if (!isAnonymousCreds) {
@@ -86755,117 +83825,93 @@ var InnerBatchRequest = /** @class */ (function () {
         }
         factories[policyFactoryLength - 1] = new BatchRequestAssemblePolicyFactory(this); // Use batch assemble policy to assemble request and intercept request from going to wire
         return new Pipeline(factories, {});
-    };
-    InnerBatchRequest.prototype.appendSubRequestToBody = function (request) {
+    }
+    appendSubRequestToBody(request) {
         // Start to assemble sub request
         this.body += [
             this.subRequestPrefix,
-            HeaderConstants.CONTENT_ID + ": " + this.operationCount,
+            `${HeaderConstants.CONTENT_ID}: ${this.operationCount}`,
             "",
-            request.method.toString() + " " + getURLPathAndQuery(request.url) + " " + HTTP_VERSION_1_1 + HTTP_LINE_ENDING // sub request start line with method
+            `${request.method.toString()} ${getURLPathAndQuery(request.url)} ${HTTP_VERSION_1_1}${HTTP_LINE_ENDING}` // sub request start line with method
         ].join(HTTP_LINE_ENDING);
-        for (var _i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
-            var header = _a[_i];
-            this.body += header.name + ": " + header.value + HTTP_LINE_ENDING;
+        for (const header of request.headers.headersArray()) {
+            this.body += `${header.name}: ${header.value}${HTTP_LINE_ENDING}`;
         }
         this.body += HTTP_LINE_ENDING; // sub request's headers need be ending with an empty line
         // No body to assemble for current batch request support
         // End to assemble sub request
-    };
-    InnerBatchRequest.prototype.preAddSubRequest = function (subRequest) {
+    }
+    preAddSubRequest(subRequest) {
         if (this.operationCount >= BATCH_MAX_REQUEST) {
-            throw new RangeError("Cannot exceed " + BATCH_MAX_REQUEST + " sub requests in a single batch");
+            throw new RangeError(`Cannot exceed ${BATCH_MAX_REQUEST} sub requests in a single batch`);
         }
         // Fast fail if url for sub request is invalid
-        var path = getURLPath(subRequest.url);
+        const path = getURLPath(subRequest.url);
         if (!path || path == "") {
-            throw new RangeError("Invalid url for sub request: '" + subRequest.url + "'");
+            throw new RangeError(`Invalid url for sub request: '${subRequest.url}'`);
         }
-    };
-    InnerBatchRequest.prototype.postAddSubRequest = function (subRequest) {
+    }
+    postAddSubRequest(subRequest) {
         this.subRequests.set(this.operationCount, subRequest);
         this.operationCount++;
-    };
+    }
     // Return the http request body with assembling the ending line to the sub request body.
-    InnerBatchRequest.prototype.getHttpRequestBody = function () {
-        return "" + this.body + this.batchRequestEnding + HTTP_LINE_ENDING;
-    };
-    InnerBatchRequest.prototype.getMultipartContentType = function () {
+    getHttpRequestBody() {
+        return `${this.body}${this.batchRequestEnding}${HTTP_LINE_ENDING}`;
+    }
+    getMultipartContentType() {
         return this.multipartContentType;
-    };
-    InnerBatchRequest.prototype.getSubRequests = function () {
+    }
+    getSubRequests() {
         return this.subRequests;
-    };
-    return InnerBatchRequest;
-}());
-var BatchRequestAssemblePolicy = /** @class */ (function (_super) {
-    tslib.__extends(BatchRequestAssemblePolicy, _super);
-    function BatchRequestAssemblePolicy(batchRequest, nextPolicy, options) {
-        var _this = _super.call(this, nextPolicy, options) || this;
-        _this.dummyResponse = {
+    }
+}
+class BatchRequestAssemblePolicy extends coreHttp.BaseRequestPolicy {
+    constructor(batchRequest, nextPolicy, options) {
+        super(nextPolicy, options);
+        this.dummyResponse = {
             request: new coreHttp.WebResource(),
             status: 200,
             headers: new coreHttp.HttpHeaders()
         };
-        _this.batchRequest = batchRequest;
-        return _this;
-    }
-    BatchRequestAssemblePolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0: return [4 /*yield*/, this.batchRequest.appendSubRequestToBody(request)];
-                    case 1:
-                        _a.sent();
-                        return [2 /*return*/, this.dummyResponse]; // Intercept request from going to wire
-                }
-            });
-        });
-    };
-    return BatchRequestAssemblePolicy;
-}(coreHttp.BaseRequestPolicy));
-var BatchRequestAssemblePolicyFactory = /** @class */ (function () {
-    function BatchRequestAssemblePolicyFactory(batchRequest) {
         this.batchRequest = batchRequest;
     }
-    BatchRequestAssemblePolicyFactory.prototype.create = function (nextPolicy, options) {
+    async sendRequest(request) {
+        await this.batchRequest.appendSubRequestToBody(request);
+        return this.dummyResponse; // Intercept request from going to wire
+    }
+}
+class BatchRequestAssemblePolicyFactory {
+    constructor(batchRequest) {
+        this.batchRequest = batchRequest;
+    }
+    create(nextPolicy, options) {
         return new BatchRequestAssemblePolicy(this.batchRequest, nextPolicy, options);
-    };
-    return BatchRequestAssemblePolicyFactory;
-}());
-var BatchHeaderFilterPolicy = /** @class */ (function (_super) {
-    tslib.__extends(BatchHeaderFilterPolicy, _super);
-    function BatchHeaderFilterPolicy(nextPolicy, options) {
-        return _super.call(this, nextPolicy, options) || this;
     }
-    BatchHeaderFilterPolicy.prototype.sendRequest = function (request) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var xMsHeaderName, _i, _a, header;
-            return tslib.__generator(this, function (_b) {
-                xMsHeaderName = "";
-                for (_i = 0, _a = request.headers.headersArray(); _i < _a.length; _i++) {
-                    header = _a[_i];
-                    if (iEqual(header.name, HeaderConstants.X_MS_VERSION)) {
-                        xMsHeaderName = header.name;
-                    }
-                }
-                if (xMsHeaderName !== "") {
-                    request.headers.remove(xMsHeaderName); // The subrequests should not have the x-ms-version header.
-                }
-                return [2 /*return*/, this._nextPolicy.sendRequest(request)];
-            });
-        });
-    };
-    return BatchHeaderFilterPolicy;
-}(coreHttp.BaseRequestPolicy));
-var BatchHeaderFilterPolicyFactory = /** @class */ (function () {
-    function BatchHeaderFilterPolicyFactory() {
+}
+class BatchHeaderFilterPolicy extends coreHttp.BaseRequestPolicy {
+    constructor(nextPolicy, options) {
+        super(nextPolicy, options);
     }
-    BatchHeaderFilterPolicyFactory.prototype.create = function (nextPolicy, options) {
+    async sendRequest(request) {
+        let xMsHeaderName = "";
+        for (const header of request.headers.headersArray()) {
+            if (iEqual(header.name, HeaderConstants.X_MS_VERSION)) {
+                xMsHeaderName = header.name;
+            }
+        }
+        if (xMsHeaderName !== "") {
+            request.headers.remove(xMsHeaderName); // The subrequests should not have the x-ms-version header.
+        }
+        return this._nextPolicy.sendRequest(request);
+    }
+}
+class BatchHeaderFilterPolicyFactory {
+    constructor() { }
+    create(nextPolicy, options) {
         return new BatchHeaderFilterPolicy(nextPolicy, options);
-    };
-    return BatchHeaderFilterPolicyFactory;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -86873,9 +83919,9 @@ var BatchHeaderFilterPolicyFactory = /** @class */ (function () {
  *
  * @see https://docs.microsoft.com/en-us/rest/api/storageservices/blob-batch
  */
-var BlobBatchClient = /** @class */ (function () {
-    function BlobBatchClient(url, credentialOrPipeline, options) {
-        var pipeline;
+class BlobBatchClient {
+    constructor(url, credentialOrPipeline, options) {
+        let pipeline;
         if (credentialOrPipeline instanceof Pipeline) {
             pipeline = credentialOrPipeline;
         }
@@ -86886,8 +83932,8 @@ var BlobBatchClient = /** @class */ (function () {
         else {
             pipeline = newPipeline(credentialOrPipeline, options);
         }
-        var storageClientContext = new StorageClientContext(url, pipeline.toServiceClientOptions());
-        var path = getURLPath(url);
+        const storageClientContext = new StorageClientContext(url, pipeline.toServiceClientOptions());
+        const path = getURLPath(url);
         if (path && path !== "/") {
             // Container scoped.
             this.serviceOrContainerContext = new Container(storageClientContext);
@@ -86900,67 +83946,33 @@ var BlobBatchClient = /** @class */ (function () {
      * Creates a {@link BlobBatch}.
      * A BlobBatch represents an aggregated set of operations on blobs.
      */
-    BlobBatchClient.prototype.createBatch = function () {
+    createBatch() {
         return new BlobBatch();
-    };
-    BlobBatchClient.prototype.deleteBlobs = function (urlsOrBlobClients, credentialOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var batch, _i, urlsOrBlobClients_1, urlOrBlobClient;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        batch = new BlobBatch();
-                        _i = 0, urlsOrBlobClients_1 = urlsOrBlobClients;
-                        _a.label = 1;
-                    case 1:
-                        if (!(_i < urlsOrBlobClients_1.length)) return [3 /*break*/, 6];
-                        urlOrBlobClient = urlsOrBlobClients_1[_i];
-                        if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
-                        return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 5];
-                    case 3: return [4 /*yield*/, batch.deleteBlob(urlOrBlobClient, credentialOrOptions)];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 6: return [2 /*return*/, this.submitBatch(batch)];
-                }
-            });
-        });
-    };
-    BlobBatchClient.prototype.setBlobsAccessTier = function (urlsOrBlobClients, credentialOrTier, tierOrOptions, options) {
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var batch, _i, urlsOrBlobClients_2, urlOrBlobClient;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        batch = new BlobBatch();
-                        _i = 0, urlsOrBlobClients_2 = urlsOrBlobClients;
-                        _a.label = 1;
-                    case 1:
-                        if (!(_i < urlsOrBlobClients_2.length)) return [3 /*break*/, 6];
-                        urlOrBlobClient = urlsOrBlobClients_2[_i];
-                        if (!(typeof urlOrBlobClient === "string")) return [3 /*break*/, 3];
-                        return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options)];
-                    case 2:
-                        _a.sent();
-                        return [3 /*break*/, 5];
-                    case 3: return [4 /*yield*/, batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions)];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        _i++;
-                        return [3 /*break*/, 1];
-                    case 6: return [2 /*return*/, this.submitBatch(batch)];
-                }
-            });
-        });
-    };
+    }
+    async deleteBlobs(urlsOrBlobClients, credentialOrOptions, options) {
+        const batch = new BlobBatch();
+        for (const urlOrBlobClient of urlsOrBlobClients) {
+            if (typeof urlOrBlobClient === "string") {
+                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions, options);
+            }
+            else {
+                await batch.deleteBlob(urlOrBlobClient, credentialOrOptions);
+            }
+        }
+        return this.submitBatch(batch);
+    }
+    async setBlobsAccessTier(urlsOrBlobClients, credentialOrTier, tierOrOptions, options) {
+        const batch = new BlobBatch();
+        for (const urlOrBlobClient of urlsOrBlobClients) {
+            if (typeof urlOrBlobClient === "string") {
+                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions, options);
+            }
+            else {
+                await batch.setBlobAccessTier(urlOrBlobClient, credentialOrTier, tierOrOptions);
+            }
+        }
+        return this.submitBatch(batch);
+    }
     /**
      * Submit batch request which consists of multiple subrequests.
      *
@@ -86996,67 +84008,51 @@ var BlobBatchClient = /** @class */ (function () {
      * @param batchRequest - A set of Delete or SetTier operations.
      * @param options -
      */
-    BlobBatchClient.prototype.submitBatch = function (batchRequest, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, batchRequestBody, rawBatchResponse, batchResponseParser, responseSummary, res, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!batchRequest || batchRequest.getSubRequests().size == 0) {
-                            throw new RangeError("Batch request should contain one or more sub requests.");
-                        }
-                        _a = createSpan("BlobBatchClient-submitBatch", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 4, 5, 6]);
-                        batchRequestBody = batchRequest.getHttpRequestBody();
-                        return [4 /*yield*/, this.serviceOrContainerContext.submitBatch(utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), batchRequestBody, tslib.__assign(tslib.__assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        rawBatchResponse = _b.sent();
-                        batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());
-                        return [4 /*yield*/, batchResponseParser.parseBatchResponse()];
-                    case 3:
-                        responseSummary = _b.sent();
-                        res = {
-                            _response: rawBatchResponse._response,
-                            contentType: rawBatchResponse.contentType,
-                            errorCode: rawBatchResponse.errorCode,
-                            requestId: rawBatchResponse.requestId,
-                            clientRequestId: rawBatchResponse.clientRequestId,
-                            version: rawBatchResponse.version,
-                            subResponses: responseSummary.subResponses,
-                            subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,
-                            subResponsesFailedCount: responseSummary.subResponsesFailedCount
-                        };
-                        return [2 /*return*/, res];
-                    case 4:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 5:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 6: return [2 /*return*/];
-                }
+    async submitBatch(batchRequest, options = {}) {
+        if (!batchRequest || batchRequest.getSubRequests().size == 0) {
+            throw new RangeError("Batch request should contain one or more sub requests.");
+        }
+        const { span, updatedOptions } = createSpan("BlobBatchClient-submitBatch", options);
+        try {
+            const batchRequestBody = batchRequest.getHttpRequestBody();
+            // ServiceSubmitBatchResponseModel and ContainerSubmitBatchResponse are compatible for now.
+            const rawBatchResponse = await this.serviceOrContainerContext.submitBatch(utf8ByteLength(batchRequestBody), batchRequest.getMultiPartContentType(), batchRequestBody, Object.assign(Object.assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            // Parse the sub responses result, if logic reaches here(i.e. the batch request succeeded with status code 202).
+            const batchResponseParser = new BatchResponseParser(rawBatchResponse, batchRequest.getSubRequests());
+            const responseSummary = await batchResponseParser.parseBatchResponse();
+            const res = {
+                _response: rawBatchResponse._response,
+                contentType: rawBatchResponse.contentType,
+                errorCode: rawBatchResponse.errorCode,
+                requestId: rawBatchResponse.requestId,
+                clientRequestId: rawBatchResponse.clientRequestId,
+                version: rawBatchResponse.version,
+                subResponses: responseSummary.subResponses,
+                subResponsesSucceededCount: responseSummary.subResponsesSucceededCount,
+                subResponsesFailedCount: responseSummary.subResponsesFailedCount
+            };
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
-    return BlobBatchClient;
-}());
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
+}
 
 /**
  * A ContainerClient represents a URL to the Azure Storage container allowing you to manipulate its blobs.
  */
-var ContainerClient = /** @class */ (function (_super) {
-    tslib.__extends(ContainerClient, _super);
-    function ContainerClient(urlOrConnectionString, credentialOrPipelineOrContainerName, options) {
-        var _this = this;
-        var pipeline;
-        var url;
+class ContainerClient extends StorageClient {
+    constructor(urlOrConnectionString, credentialOrPipelineOrContainerName, options) {
+        let pipeline;
+        let url;
         options = options || {};
         if (credentialOrPipelineOrContainerName instanceof Pipeline) {
             // (url: string, pipeline: Pipeline)
@@ -87080,11 +84076,11 @@ var ContainerClient = /** @class */ (function (_super) {
         else if (credentialOrPipelineOrContainerName &&
             typeof credentialOrPipelineOrContainerName === "string") {
             // (connectionString: string, containerName: string, blobName: string, options?: StoragePipelineOptions)
-            var containerName = credentialOrPipelineOrContainerName;
-            var extractedCreds = extractConnectionStringParts(urlOrConnectionString);
+            const containerName = credentialOrPipelineOrContainerName;
+            const extractedCreds = extractConnectionStringParts(urlOrConnectionString);
             if (extractedCreds.kind === "AccountConnString") {
                 {
-                    var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                    const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                     url = appendToURLPath(extractedCreds.url, encodeURIComponent(containerName));
                     options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
                     pipeline = newPipeline(sharedKeyCredential, options);
@@ -87104,21 +84100,16 @@ var ContainerClient = /** @class */ (function (_super) {
         else {
             throw new Error("Expecting non-empty strings for containerName parameter");
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this._containerName = _this.getContainerNameFromUrl();
-        _this.containerContext = new Container(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this._containerName = this.getContainerNameFromUrl();
+        this.containerContext = new Container(this.storageClientContext);
+    }
+    /**
+     * The name of the container.
+     */
+    get containerName() {
+        return this._containerName;
     }
-    Object.defineProperty(ContainerClient.prototype, "containerName", {
-        /**
-         * The name of the container.
-         */
-        get: function () {
-            return this._containerName;
-        },
-        enumerable: false,
-        configurable: true
-    });
     /**
      * Creates a new container under the specified account. If the container with
      * the same name already exists, the operation fails.
@@ -87135,37 +84126,24 @@ var ContainerClient = /** @class */ (function (_super) {
      * console.log("Container was created successfully", createContainerResponse.requestId);
      * ```
      */
-    ContainerClient.prototype.create = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-create", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.create(tslib.__assign(tslib.__assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: 
-                    // Spread operator in destructuring assignments,
-                    // this will filter out unwanted properties from the response object into result object
-                    return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async create(options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-create", options);
+        try {
+            // Spread operator in destructuring assignments,
+            // this will filter out unwanted properties from the response object into result object
+            return await this.containerContext.create(Object.assign(Object.assign({}, options), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a new container under the specified account. If the container with
      * the same name already exists, it is not changed.
@@ -87173,45 +84151,32 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options -
      */
-    ContainerClient.prototype.createIfNotExists = function (options) {
+    async createIfNotExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, res, e_2;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("ContainerClient-createIfNotExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.create(updatedOptions)];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_2 = _d.sent();
-                        if (((_a = e_2.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when creating a container only if it does not already exist."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_2.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_2.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("ContainerClient-createIfNotExists", options);
+        try {
+            const res = await this.create(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerAlreadyExists") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when creating a container only if it does not already exist."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns true if the Azure container resource represented by this client exists; false otherwise.
      *
@@ -87221,63 +84186,50 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options -
      */
-    ContainerClient.prototype.exists = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_3;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-exists", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.getProperties({
-                                abortSignal: options.abortSignal,
-                                tracingOptions: updatedOptions.tracingOptions
-                            })];
-                    case 2:
-                        _b.sent();
-                        return [2 /*return*/, true];
-                    case 3:
-                        e_3 = _b.sent();
-                        if (e_3.statusCode === 404) {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when checking container existence"
-                            });
-                            return [2 /*return*/, false];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async exists(options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-exists", options);
+        try {
+            await this.getProperties({
+                abortSignal: options.abortSignal,
+                tracingOptions: updatedOptions.tracingOptions
             });
-        });
-    };
+            return true;
+        }
+        catch (e) {
+            if (e.statusCode === 404) {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when checking container existence"
+                });
+                return false;
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
+            });
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a {@link BlobClient}
      *
      * @param blobName - A blob name
      * @returns A new BlobClient object for the given blob name.
      */
-    ContainerClient.prototype.getBlobClient = function (blobName) {
+    getBlobClient(blobName) {
         return new BlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates an {@link AppendBlobClient}
      *
      * @param blobName - An append blob name
      */
-    ContainerClient.prototype.getAppendBlobClient = function (blobName) {
+    getAppendBlobClient(blobName) {
         return new AppendBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates a {@link BlockBlobClient}
      *
@@ -87293,17 +84245,17 @@ var ContainerClient = /** @class */ (function (_super) {
      * const uploadBlobResponse = await blockBlobClient.upload(content, content.length);
      * ```
      */
-    ContainerClient.prototype.getBlockBlobClient = function (blobName) {
+    getBlockBlobClient(blobName) {
         return new BlockBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Creates a {@link PageBlobClient}
      *
      * @param blobName - A page blob name
      */
-    ContainerClient.prototype.getPageBlobClient = function (blobName) {
+    getPageBlobClient(blobName) {
         return new PageBlobClient(appendToURLPath(this.url, encodeURIComponent(blobName)), this.pipeline);
-    };
+    }
     /**
      * Returns all user-defined metadata and system properties for the specified
      * container. The data returned does not include the container's list of blobs.
@@ -87316,37 +84268,25 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options - Options to Container Get Properties operation.
      */
-    ContainerClient.prototype.getProperties = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_4;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-getProperties", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.getProperties(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal }, options.conditions), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_4 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getProperties(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-getProperties", options);
+        try {
+            return await this.containerContext.getProperties(Object.assign(Object.assign({ abortSignal: options.abortSignal }, options.conditions), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified container for deletion. The container and any blobs
      * contained within it are later deleted during garbage collection.
@@ -87354,37 +84294,25 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options - Options to Container Delete operation.
      */
-    ContainerClient.prototype.delete = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_5;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-delete", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.delete(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_5 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async delete(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-delete", options);
+        try {
+            return await this.containerContext.delete(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified container for deletion if it exists. The container and any blobs
      * contained within it are later deleted during garbage collection.
@@ -87392,45 +84320,32 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options - Options to Container Delete operation.
      */
-    ContainerClient.prototype.deleteIfExists = function (options) {
+    async deleteIfExists(options = {}) {
         var _a, _b;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _c, span, updatedOptions, res, e_6;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _c = createSpan("ContainerClient-deleteIfExists", options), span = _c.span, updatedOptions = _c.updatedOptions;
-                        _d.label = 1;
-                    case 1:
-                        _d.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.delete(updatedOptions)];
-                    case 2:
-                        res = _d.sent();
-                        return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
-                             })];
-                    case 3:
-                        e_6 = _d.sent();
-                        if (((_a = e_6.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
-                            span.setStatus({
-                                code: coreTracing.SpanStatusCode.ERROR,
-                                message: "Expected exception when deleting a container only if it exists."
-                            });
-                            return [2 /*return*/, tslib.__assign(tslib.__assign({ succeeded: false }, (_b = e_6.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e_6.response })];
-                        }
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("ContainerClient-deleteIfExists", options);
+        try {
+            const res = await this.delete(updatedOptions);
+            return Object.assign(Object.assign({ succeeded: true }, res), { _response: res._response // _response is made non-enumerable
+             });
+        }
+        catch (e) {
+            if (((_a = e.details) === null || _a === void 0 ? void 0 : _a.errorCode) === "ContainerNotFound") {
+                span.setStatus({
+                    code: coreTracing.SpanStatusCode.ERROR,
+                    message: "Expected exception when deleting a container only if it exists."
+                });
+                return Object.assign(Object.assign({ succeeded: false }, (_b = e.response) === null || _b === void 0 ? void 0 : _b.parsedHeaders), { _response: e.response });
+            }
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets one or more user-defined name-value pairs for the specified container.
      *
@@ -87443,40 +84358,28 @@ var ContainerClient = /** @class */ (function (_super) {
      *                            If no value provided the existing metadata will be removed.
      * @param options - Options to Container Set Metadata operation.
      */
-    ContainerClient.prototype.setMetadata = function (metadata, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_7;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        if (options.conditions.ifUnmodifiedSince) {
-                            throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service");
-                        }
-                        _a = createSpan("ContainerClient-setMetadata", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.setMetadata(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata: metadata, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_7 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setMetadata(metadata, options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        if (options.conditions.ifUnmodifiedSince) {
+            throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service");
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-setMetadata", options);
+        try {
+            return await this.containerContext.setMetadata(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions, metadata, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the permissions for the specified container. The permissions indicate
      * whether container data may be accessed publicly.
@@ -87488,70 +84391,56 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @param options - Options to Container Get Access Policy operation.
      */
-    ContainerClient.prototype.getAccessPolicy = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, res, _i, response_1, identifier, accessPolicy, e_8;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        if (!options.conditions) {
-                            options.conditions = {};
-                        }
-                        _a = createSpan("ContainerClient-getAccessPolicy", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.getAccessPolicy(tslib.__assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        res = {
-                            _response: response._response,
-                            blobPublicAccess: response.blobPublicAccess,
-                            date: response.date,
-                            etag: response.etag,
-                            errorCode: response.errorCode,
-                            lastModified: response.lastModified,
-                            requestId: response.requestId,
-                            clientRequestId: response.clientRequestId,
-                            signedIdentifiers: [],
-                            version: response.version
-                        };
-                        for (_i = 0, response_1 = response; _i < response_1.length; _i++) {
-                            identifier = response_1[_i];
-                            accessPolicy = undefined;
-                            if (identifier.accessPolicy) {
-                                accessPolicy = {
-                                    permissions: identifier.accessPolicy.permissions
-                                };
-                                if (identifier.accessPolicy.expiresOn) {
-                                    accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
-                                }
-                                if (identifier.accessPolicy.startsOn) {
-                                    accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);
-                                }
-                            }
-                            res.signedIdentifiers.push({
-                                accessPolicy: accessPolicy,
-                                id: identifier.id
-                            });
-                        }
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_8 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
+    async getAccessPolicy(options = {}) {
+        if (!options.conditions) {
+            options.conditions = {};
+        }
+        const { span, updatedOptions } = createSpan("ContainerClient-getAccessPolicy", options);
+        try {
+            const response = await this.containerContext.getAccessPolicy(Object.assign({ abortSignal: options.abortSignal, leaseAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const res = {
+                _response: response._response,
+                blobPublicAccess: response.blobPublicAccess,
+                date: response.date,
+                etag: response.etag,
+                errorCode: response.errorCode,
+                lastModified: response.lastModified,
+                requestId: response.requestId,
+                clientRequestId: response.clientRequestId,
+                signedIdentifiers: [],
+                version: response.version
+            };
+            for (const identifier of response) {
+                let accessPolicy = undefined;
+                if (identifier.accessPolicy) {
+                    accessPolicy = {
+                        permissions: identifier.accessPolicy.permissions
+                    };
+                    if (identifier.accessPolicy.expiresOn) {
+                        accessPolicy.expiresOn = new Date(identifier.accessPolicy.expiresOn);
+                    }
+                    if (identifier.accessPolicy.startsOn) {
+                        accessPolicy.startsOn = new Date(identifier.accessPolicy.startsOn);
+                    }
                 }
+                res.signedIdentifiers.push({
+                    accessPolicy,
+                    id: identifier.id
+                });
+            }
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets the permissions for the specified container. The permissions indicate
      * whether blobs in a container may be accessed publicly.
@@ -87569,60 +84458,47 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param containerAcl - Array of elements each having a unique Id and details of the access policy.
      * @param options - Options to Container Set Access Policy operation.
      */
-    ContainerClient.prototype.setAccessPolicy = function (access, containerAcl, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, acl, _i, _b, identifier, e_9;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        options.conditions = options.conditions || {};
-                        _a = createSpan("ContainerClient-setAccessPolicy", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        acl = [];
-                        for (_i = 0, _b = containerAcl || []; _i < _b.length; _i++) {
-                            identifier = _b[_i];
-                            acl.push({
-                                accessPolicy: {
-                                    expiresOn: identifier.accessPolicy.expiresOn
-                                        ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)
-                                        : "",
-                                    permissions: identifier.accessPolicy.permissions,
-                                    startsOn: identifier.accessPolicy.startsOn
-                                        ? truncatedISO8061Date(identifier.accessPolicy.startsOn)
-                                        : ""
-                                },
-                                id: identifier.id
-                            });
-                        }
-                        return [4 /*yield*/, this.containerContext.setAccessPolicy(tslib.__assign({ abortSignal: options.abortSignal, access: access, containerAcl: acl, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _c.sent()];
-                    case 3:
-                        e_9 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_9.message
-                        });
-                        throw e_9;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setAccessPolicy(access, containerAcl, options = {}) {
+        options.conditions = options.conditions || {};
+        const { span, updatedOptions } = createSpan("ContainerClient-setAccessPolicy", options);
+        try {
+            const acl = [];
+            for (const identifier of containerAcl || []) {
+                acl.push({
+                    accessPolicy: {
+                        expiresOn: identifier.accessPolicy.expiresOn
+                            ? truncatedISO8061Date(identifier.accessPolicy.expiresOn)
+                            : "",
+                        permissions: identifier.accessPolicy.permissions,
+                        startsOn: identifier.accessPolicy.startsOn
+                            ? truncatedISO8061Date(identifier.accessPolicy.startsOn)
+                            : ""
+                    },
+                    id: identifier.id
+                });
+            }
+            return await this.containerContext.setAccessPolicy(Object.assign({ abortSignal: options.abortSignal, access, containerAcl: acl, leaseAccessConditions: options.conditions, modifiedAccessConditions: options.conditions }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Get a {@link BlobLeaseClient} that manages leases on the container.
      *
      * @param proposeLeaseId - Initial proposed lease Id.
      * @returns A new BlobLeaseClient object for managing leases on the container.
      */
-    ContainerClient.prototype.getBlobLeaseClient = function (proposeLeaseId) {
+    getBlobLeaseClient(proposeLeaseId) {
         return new BlobLeaseClient(this, proposeLeaseId);
-    };
+    }
     /**
      * Creates a new block blob, or updates the content of an existing block blob.
      *
@@ -87645,40 +84521,27 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param options - Options to configure the Block Blob Upload operation.
      * @returns Block Blob upload response data and the corresponding BlockBlobClient instance.
      */
-    ContainerClient.prototype.uploadBlockBlob = function (blobName, body, contentLength, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, blockBlobClient, response, e_10;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-uploadBlockBlob", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        blockBlobClient = this.getBlockBlobClient(blobName);
-                        return [4 /*yield*/, blockBlobClient.upload(body, contentLength, updatedOptions)];
-                    case 2:
-                        response = _b.sent();
-                        return [2 /*return*/, {
-                                blockBlobClient: blockBlobClient,
-                                response: response
-                            }];
-                    case 3:
-                        e_10 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_10.message
-                        });
-                        throw e_10;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async uploadBlockBlob(blobName, body, contentLength, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-uploadBlockBlob", options);
+        try {
+            const blockBlobClient = this.getBlockBlobClient(blobName);
+            const response = await blockBlobClient.upload(body, contentLength, updatedOptions);
+            return {
+                blockBlobClient,
+                response
+            };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Marks the specified blob or snapshot for deletion. The blob is later deleted
      * during garbage collection. Note that in order to delete a blob, you must delete
@@ -87690,38 +84553,26 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param options - Options to Blob Delete operation.
      * @returns Block blob deletion response data.
      */
-    ContainerClient.prototype.deleteBlob = function (blobName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, blobClient, e_11;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-deleteBlob", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        blobClient = this.getBlobClient(blobName);
-                        if (options.versionId) {
-                            blobClient = blobClient.withVersion(options.versionId);
-                        }
-                        return [4 /*yield*/, blobClient.delete(updatedOptions)];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_11 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_11.message
-                        });
-                        throw e_11;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async deleteBlob(blobName, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-deleteBlob", options);
+        try {
+            let blobClient = this.getBlobClient(blobName);
+            if (options.versionId) {
+                blobClient = blobClient.withVersion(options.versionId);
+            }
+            return await blobClient.delete(updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * listBlobFlatSegment returns a single segment of blobs starting from the
      * specified Marker. Use an empty Marker to start enumeration from the beginning.
@@ -87732,40 +84583,27 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
      * @param options - Options to Container List Blob Flat Segment operation.
      */
-    ContainerClient.prototype.listBlobFlatSegment = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, wrappedResponse, e_12;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-listBlobFlatSegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.listBlobFlatSegment(tslib.__assign(tslib.__assign({ marker: marker }, options), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
-                                    var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
-                                    return blobItem;
-                                }) }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_12 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_12.message
-                        });
-                        throw e_12;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listBlobFlatSegment(marker, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-listBlobFlatSegment", options);
+        try {
+            const response = await this.containerContext.listBlobFlatSegment(Object.assign(Object.assign({ marker }, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInteral) => {
+                        const blobItem = Object.assign(Object.assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
+                        return blobItem;
+                    }) }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * listBlobHierarchySegment returns a single segment of blobs starting from
      * the specified Marker. Use an empty Marker to start enumeration from the
@@ -87777,40 +84615,27 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param marker - A string value that identifies the portion of the list to be returned with the next list operation.
      * @param options - Options to Container List Blob Hierarchy Segment operation.
      */
-    ContainerClient.prototype.listBlobHierarchySegment = function (delimiter, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, wrappedResponse, e_13;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("ContainerClient-listBlobHierarchySegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.containerContext.listBlobHierarchySegment(delimiter, tslib.__assign(tslib.__assign({ marker: marker }, options), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, segment: tslib.__assign(tslib.__assign({}, response.segment), { blobItems: response.segment.blobItems.map(function (blobItemInteral) {
-                                    var blobItem = tslib.__assign(tslib.__assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
-                                    return blobItem;
-                                }) }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_13 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_13.message
-                        });
-                        throw e_13;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listBlobHierarchySegment(delimiter, marker, options = {}) {
+        const { span, updatedOptions } = createSpan("ContainerClient-listBlobHierarchySegment", options);
+        try {
+            const response = await this.containerContext.listBlobHierarchySegment(delimiter, Object.assign(Object.assign({ marker }, options), convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, segment: Object.assign(Object.assign({}, response.segment), { blobItems: response.segment.blobItems.map((blobItemInteral) => {
+                        const blobItem = Object.assign(Object.assign({}, blobItemInteral), { tags: toTags(blobItemInteral.blobTags), objectReplicationSourceProperties: parseObjectReplicationRecord(blobItemInteral.objectReplicationMetadata) });
+                        return blobItem;
+                    }) }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns an AsyncIterableIterator for ContainerListBlobFlatSegmentResponse
      *
@@ -87823,81 +84648,42 @@ var ContainerClient = /** @class */ (function (_super) {
      *                          items. The marker value is opaque to the client.
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listSegments = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
-            var listBlobsFlatSegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listBlobFlatSegment(marker, options))];
-                    case 2:
-                        listBlobsFlatSegmentResponse = _a.sent();
-                        marker = listBlobsFlatSegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listBlobsFlatSegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listSegments(marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listSegments_1() {
+            let listBlobsFlatSegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listBlobsFlatSegmentResponse = yield tslib.__await(this.listBlobFlatSegment(marker, options));
+                    marker = listBlobsFlatSegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listBlobsFlatSegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator of {@link BlobItem} objects
      *
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listItems = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItems_1() {
-            var marker, _a, _b, listBlobsFlatSegmentResponse, e_14_1;
-            var e_14, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.listSegments(marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        listBlobsFlatSegmentResponse = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_14_1 = _d.sent();
-                        e_14 = { error: e_14_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_14) throw e_14.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    listItems(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItems_1() {
+            var e_1, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listSegments(marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const listBlobsFlatSegmentResponse = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(listBlobsFlatSegmentResponse.segment.blobItems)));
                 }
-            });
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the blobs
      * under the specified account.
@@ -87968,11 +84754,8 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param options - Options to list blobs.
      * @returns An asyncIterableIterator that supports paging.
      */
-    ContainerClient.prototype.listBlobsFlat = function (options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
-        var include = [];
+    listBlobsFlat(options = {}) {
+        const include = [];
         if (options.includeCopy) {
             include.push("copy");
         }
@@ -87997,32 +84780,30 @@ var ContainerClient = /** @class */ (function (_super) {
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
+        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));
         // AsyncIterableIterator to iterate over blobs
-        var iter = this.listItems(updatedOptions);
-        return _a = {
-                /**
-                 * The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const iter = this.listItems(updatedOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
              * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
              * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
+            }
+        };
+    }
     /**
      * Returns an AsyncIterableIterator for ContainerListBlobHierarchySegmentResponse
      *
@@ -88036,106 +84817,51 @@ var ContainerClient = /** @class */ (function (_super) {
      *                          items. The marker value is opaque to the client.
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listHierarchySegments = function (delimiter, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listHierarchySegments_1() {
-            var listBlobsHierarchySegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listBlobHierarchySegment(delimiter, marker, options))];
-                    case 2:
-                        listBlobsHierarchySegmentResponse = _a.sent();
-                        marker = listBlobsHierarchySegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listBlobsHierarchySegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listHierarchySegments(delimiter, marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listHierarchySegments_1() {
+            let listBlobsHierarchySegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listBlobsHierarchySegmentResponse = yield tslib.__await(this.listBlobHierarchySegment(delimiter, marker, options));
+                    marker = listBlobsHierarchySegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listBlobsHierarchySegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for {@link BlobPrefix} and {@link BlobItem} objects.
      *
      * @param delimiter - The character or string used to define the virtual hierarchy
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listItemsByHierarchy = function (delimiter, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItemsByHierarchy_1() {
-            var marker, _a, _b, listBlobsHierarchySegmentResponse, segment, _i, _c, prefix, _d, _e, blob, e_15_1;
-            var e_15, _f;
-            return tslib.__generator(this, function (_g) {
-                switch (_g.label) {
-                    case 0:
-                        _g.trys.push([0, 14, 15, 20]);
-                        _a = tslib.__asyncValues(this.listHierarchySegments(delimiter, marker, options));
-                        _g.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _g.sent(), !_b.done)) return [3 /*break*/, 13];
-                        listBlobsHierarchySegmentResponse = _b.value;
-                        segment = listBlobsHierarchySegmentResponse.segment;
-                        if (!segment.blobPrefixes) return [3 /*break*/, 7];
-                        _i = 0, _c = segment.blobPrefixes;
-                        _g.label = 3;
-                    case 3:
-                        if (!(_i < _c.length)) return [3 /*break*/, 7];
-                        prefix = _c[_i];
-                        return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "prefix" }, prefix))];
-                    case 4: return [4 /*yield*/, _g.sent()];
-                    case 5:
-                        _g.sent();
-                        _g.label = 6;
-                    case 6:
-                        _i++;
-                        return [3 /*break*/, 3];
-                    case 7:
-                        _d = 0, _e = segment.blobItems;
-                        _g.label = 8;
-                    case 8:
-                        if (!(_d < _e.length)) return [3 /*break*/, 12];
-                        blob = _e[_d];
-                        return [4 /*yield*/, tslib.__await(tslib.__assign({ kind: "blob" }, blob))];
-                    case 9: return [4 /*yield*/, _g.sent()];
-                    case 10:
-                        _g.sent();
-                        _g.label = 11;
-                    case 11:
-                        _d++;
-                        return [3 /*break*/, 8];
-                    case 12: return [3 /*break*/, 1];
-                    case 13: return [3 /*break*/, 20];
-                    case 14:
-                        e_15_1 = _g.sent();
-                        e_15 = { error: e_15_1 };
-                        return [3 /*break*/, 20];
-                    case 15:
-                        _g.trys.push([15, , 18, 19]);
-                        if (!(_b && !_b.done && (_f = _a.return))) return [3 /*break*/, 17];
-                        return [4 /*yield*/, tslib.__await(_f.call(_a))];
-                    case 16:
-                        _g.sent();
-                        _g.label = 17;
-                    case 17: return [3 /*break*/, 19];
-                    case 18:
-                        if (e_15) throw e_15.error;
-                        return [7 /*endfinally*/];
-                    case 19: return [7 /*endfinally*/];
-                    case 20: return [2 /*return*/];
+    listItemsByHierarchy(delimiter, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItemsByHierarchy_1() {
+            var e_2, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listHierarchySegments(delimiter, marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const listBlobsHierarchySegmentResponse = _c.value;
+                    const segment = listBlobsHierarchySegmentResponse.segment;
+                    if (segment.blobPrefixes) {
+                        for (const prefix of segment.blobPrefixes) {
+                            yield yield tslib.__await(Object.assign({ kind: "prefix" }, prefix));
+                        }
+                    }
+                    for (const blob of segment.blobItems) {
+                        yield yield tslib.__await(Object.assign({ kind: "blob" }, blob));
+                    }
                 }
-            });
+            }
+            catch (e_2_1) { e_2 = { error: e_2_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_2) throw e_2.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the blobs by hierarchy.
      * under the specified account.
@@ -88212,14 +84938,11 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param delimiter - The character or string used to define the virtual hierarchy
      * @param options - Options to list blobs operation.
      */
-    ContainerClient.prototype.listBlobsByHierarchy = function (delimiter, options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    listBlobsByHierarchy(delimiter, options = {}) {
         if (delimiter === "") {
             throw new RangeError("delimiter should contain one or more characters");
         }
-        var include = [];
+        const include = [];
         if (options.includeCopy) {
             include.push("copy");
         }
@@ -88244,45 +84967,39 @@ var ContainerClient = /** @class */ (function (_super) {
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var updatedOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
+        const updatedOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include: include } : {}));
         // AsyncIterableIterator to iterate over blob prefixes and blobs
-        var iter = this.listItemsByHierarchy(delimiter, updatedOptions);
-        return _a = {
-                /**
-                 * The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return tslib.__awaiter(this, void 0, void 0, function () {
-                        return tslib.__generator(this, function (_a) {
-                            return [2 /*return*/, iter.next()];
-                        });
-                    });
-                }
+        const iter = this.listItemsByHierarchy(delimiter, updatedOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            async next() {
+                return iter.next();
             },
             /**
              * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
              * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listHierarchySegments(delimiter, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
-            },
-            _a;
-    };
-    ContainerClient.prototype.getContainerNameFromUrl = function () {
-        var containerName;
+            byPage: (settings = {}) => {
+                return this.listHierarchySegments(delimiter, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, updatedOptions));
+            }
+        };
+    }
+    getContainerNameFromUrl() {
+        let containerName;
         try {
             //  URL may look like the following
             // "https://myaccount.blob.core.windows.net/mycontainer?sasString";
             // "https://myaccount.blob.core.windows.net/mycontainer";
             // IPv4/IPv6 address hosts, Endpoints - `http://127.0.0.1:10000/devstoreaccount1/containername`
             // http://localhost:10001/devstoreaccount1/containername
-            var parsedUrl = coreHttp.URLBuilder.parse(this.url);
+            const parsedUrl = coreHttp.URLBuilder.parse(this.url);
             if (parsedUrl.getHost().split(".")[1] === "blob") {
                 // "https://myaccount.blob.core.windows.net/containername".
                 // "https://customdomain.com/containername".
@@ -88310,7 +85027,7 @@ var ContainerClient = /** @class */ (function (_super) {
         catch (error) {
             throw new Error("Unable to extract containerName with provided information.");
         }
-    };
+    }
     /**
      * Only available for ContainerClient constructed with a shared key credential.
      *
@@ -88322,16 +85039,15 @@ var ContainerClient = /** @class */ (function (_super) {
      * @param options - Optional parameters.
      * @returns The SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
      */
-    ContainerClient.prototype.generateSasUrl = function (options) {
-        var _this = this;
-        return new Promise(function (resolve) {
-            if (!(_this.credential instanceof StorageSharedKeyCredential)) {
+    generateSasUrl(options) {
+        return new Promise((resolve) => {
+            if (!(this.credential instanceof StorageSharedKeyCredential)) {
                 throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential");
             }
-            var sas = generateBlobSASQueryParameters(tslib.__assign({ containerName: _this._containerName }, options), _this.credential).toString();
-            resolve(appendToURLQuery(_this.url, sas));
+            const sas = generateBlobSASQueryParameters(Object.assign({ containerName: this._containerName }, options), this.credential).toString();
+            resolve(appendToURLQuery(this.url, sas));
         });
-    };
+    }
     /**
      * Creates a BlobBatchClient object to conduct batch operations.
      *
@@ -88339,11 +85055,10 @@ var ContainerClient = /** @class */ (function (_super) {
      *
      * @returns A new BlobBatchClient object for this container.
      */
-    ContainerClient.prototype.getBlobBatchClient = function () {
+    getBlobBatchClient() {
         return new BlobBatchClient(this.url, this.pipeline);
-    };
-    return ContainerClient;
-}(StorageClient));
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -88356,8 +85071,8 @@ var ContainerClient = /** @class */ (function (_super) {
  * {@link AccountSASSignatureValues} object. It is possible to construct the permissions string without this class, but
  * the order of the permissions is particular and this class guarantees correctness.
  */
-var AccountSASPermissions = /** @class */ (function () {
-    function AccountSASPermissions() {
+class AccountSASPermissions {
+    constructor() {
         /**
          * Permission to read resources and list queues and tables granted.
          */
@@ -88408,10 +85123,9 @@ var AccountSASPermissions = /** @class */ (function () {
      *
      * @param permissions -
      */
-    AccountSASPermissions.parse = function (permissions) {
-        var accountSASPermissions = new AccountSASPermissions();
-        for (var _i = 0, permissions_1 = permissions; _i < permissions_1.length; _i++) {
-            var c = permissions_1[_i];
+    static parse(permissions) {
+        const accountSASPermissions = new AccountSASPermissions();
+        for (const c of permissions) {
             switch (c) {
                 case "r":
                     accountSASPermissions.read = true;
@@ -88447,19 +85161,19 @@ var AccountSASPermissions = /** @class */ (function () {
                     accountSASPermissions.filter = true;
                     break;
                 default:
-                    throw new RangeError("Invalid permission character: " + c);
+                    throw new RangeError(`Invalid permission character: ${c}`);
             }
         }
         return accountSASPermissions;
-    };
+    }
     /**
      * Creates a {@link AccountSASPermissions} from a raw object which contains same keys as it
      * and boolean values for them.
      *
      * @param permissionLike -
      */
-    AccountSASPermissions.from = function (permissionLike) {
-        var accountSASPermissions = new AccountSASPermissions();
+    static from(permissionLike) {
+        const accountSASPermissions = new AccountSASPermissions();
         if (permissionLike.read) {
             accountSASPermissions.read = true;
         }
@@ -88494,7 +85208,7 @@ var AccountSASPermissions = /** @class */ (function () {
             accountSASPermissions.process = true;
         }
         return accountSASPermissions;
-    };
+    }
     /**
      * Produces the SAS permissions string for an Azure Storage account.
      * Call this method to set AccountSASSignatureValues Permissions field.
@@ -88505,11 +85219,11 @@ var AccountSASPermissions = /** @class */ (function () {
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
      *
      */
-    AccountSASPermissions.prototype.toString = function () {
+    toString() {
         // The order of the characters should be as specified here to ensure correctness:
         // https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
         // Use a string array instead of string concatenating += operator for performance
-        var permissions = [];
+        const permissions = [];
         if (this.read) {
             permissions.push("r");
         }
@@ -88544,9 +85258,8 @@ var AccountSASPermissions = /** @class */ (function () {
             permissions.push("p");
         }
         return permissions.join("");
-    };
-    return AccountSASPermissions;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -88559,8 +85272,8 @@ var AccountSASPermissions = /** @class */ (function () {
  * {@link AccountSASSignatureValues} object. It is possible to construct the resources string without this class, but
  * the order of the resources is particular and this class guarantees correctness.
  */
-var AccountSASResourceTypes = /** @class */ (function () {
-    function AccountSASResourceTypes() {
+class AccountSASResourceTypes {
+    constructor() {
         /**
          * Permission to access service level APIs granted.
          */
@@ -88580,10 +85293,9 @@ var AccountSASResourceTypes = /** @class */ (function () {
      *
      * @param resourceTypes -
      */
-    AccountSASResourceTypes.parse = function (resourceTypes) {
-        var accountSASResourceTypes = new AccountSASResourceTypes();
-        for (var _i = 0, resourceTypes_1 = resourceTypes; _i < resourceTypes_1.length; _i++) {
-            var c = resourceTypes_1[_i];
+    static parse(resourceTypes) {
+        const accountSASResourceTypes = new AccountSASResourceTypes();
+        for (const c of resourceTypes) {
             switch (c) {
                 case "s":
                     accountSASResourceTypes.service = true;
@@ -88595,19 +85307,19 @@ var AccountSASResourceTypes = /** @class */ (function () {
                     accountSASResourceTypes.object = true;
                     break;
                 default:
-                    throw new RangeError("Invalid resource type: " + c);
+                    throw new RangeError(`Invalid resource type: ${c}`);
             }
         }
         return accountSASResourceTypes;
-    };
+    }
     /**
      * Converts the given resource types to a string.
      *
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/constructing-an-account-sas
      *
      */
-    AccountSASResourceTypes.prototype.toString = function () {
-        var resourceTypes = [];
+    toString() {
+        const resourceTypes = [];
         if (this.service) {
             resourceTypes.push("s");
         }
@@ -88618,9 +85330,8 @@ var AccountSASResourceTypes = /** @class */ (function () {
             resourceTypes.push("o");
         }
         return resourceTypes.join("");
-    };
-    return AccountSASResourceTypes;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 // Licensed under the MIT license.
@@ -88633,8 +85344,8 @@ var AccountSASResourceTypes = /** @class */ (function () {
  * {@link AccountSASSignatureValues} object. It is possible to construct the services string without this class, but
  * the order of the services is particular and this class guarantees correctness.
  */
-var AccountSASServices = /** @class */ (function () {
-    function AccountSASServices() {
+class AccountSASServices {
+    constructor() {
         /**
          * Permission to access blob resources granted.
          */
@@ -88658,10 +85369,9 @@ var AccountSASServices = /** @class */ (function () {
      *
      * @param services -
      */
-    AccountSASServices.parse = function (services) {
-        var accountSASServices = new AccountSASServices();
-        for (var _i = 0, services_1 = services; _i < services_1.length; _i++) {
-            var c = services_1[_i];
+    static parse(services) {
+        const accountSASServices = new AccountSASServices();
+        for (const c of services) {
             switch (c) {
                 case "b":
                     accountSASServices.blob = true;
@@ -88676,17 +85386,17 @@ var AccountSASServices = /** @class */ (function () {
                     accountSASServices.table = true;
                     break;
                 default:
-                    throw new RangeError("Invalid service character: " + c);
+                    throw new RangeError(`Invalid service character: ${c}`);
             }
         }
         return accountSASServices;
-    };
+    }
     /**
      * Converts the given services to a string.
      *
      */
-    AccountSASServices.prototype.toString = function () {
-        var services = [];
+    toString() {
+        const services = [];
         if (this.blob) {
             services.push("b");
         }
@@ -88700,9 +85410,8 @@ var AccountSASServices = /** @class */ (function () {
             services.push("f");
         }
         return services.join("");
-    };
-    return AccountSASServices;
-}());
+    }
+}
 
 // Copyright (c) Microsoft Corporation.
 /**
@@ -88717,7 +85426,7 @@ var AccountSASServices = /** @class */ (function () {
  * @param sharedKeyCredential -
  */
 function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyCredential) {
-    var version = accountSASSignatureValues.version
+    const version = accountSASSignatureValues.version
         ? accountSASSignatureValues.version
         : SERVICE_VERSION;
     if (accountSASSignatureValues.permissions &&
@@ -88735,10 +85444,10 @@ function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyC
         version < "2019-12-12") {
         throw RangeError("'version' must be >= '2019-12-12' when provided 'f' permission.");
     }
-    var parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());
-    var parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();
-    var parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();
-    var stringToSign = [
+    const parsedPermissions = AccountSASPermissions.parse(accountSASSignatureValues.permissions.toString());
+    const parsedServices = AccountSASServices.parse(accountSASSignatureValues.services).toString();
+    const parsedResourceTypes = AccountSASResourceTypes.parse(accountSASSignatureValues.resourceTypes).toString();
+    const stringToSign = [
         sharedKeyCredential.accountName,
         parsedPermissions,
         parsedServices,
@@ -88752,7 +85461,7 @@ function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyC
         version,
         "" // Account SAS requires an additional newline character
     ].join("\n");
-    var signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
+    const signature = sharedKeyCredential.computeHMACSHA256(stringToSign);
     return new SASQueryParameters(version, signature, parsedPermissions.toString(), parsedServices, parsedResourceTypes, accountSASSignatureValues.protocol, accountSASSignatureValues.startsOn, accountSASSignatureValues.expiresOn, accountSASSignatureValues.ipRange);
 }
 
@@ -88760,11 +85469,9 @@ function generateAccountSASQueryParameters(accountSASSignatureValues, sharedKeyC
  * A BlobServiceClient represents a Client to the Azure Storage Blob service allowing you
  * to manipulate blob containers.
  */
-var BlobServiceClient = /** @class */ (function (_super) {
-    tslib.__extends(BlobServiceClient, _super);
-    function BlobServiceClient(url, credentialOrPipeline, options) {
-        var _this = this;
-        var pipeline;
+class BlobServiceClient extends StorageClient {
+    constructor(url, credentialOrPipeline, options) {
+        let pipeline;
         if (credentialOrPipeline instanceof Pipeline) {
             pipeline = credentialOrPipeline;
         }
@@ -88777,9 +85484,8 @@ var BlobServiceClient = /** @class */ (function (_super) {
             // The second parameter is undefined. Use anonymous credential
             pipeline = newPipeline(new AnonymousCredential(), options);
         }
-        _this = _super.call(this, url, pipeline) || this;
-        _this.serviceContext = new Service(_this.storageClientContext);
-        return _this;
+        super(url, pipeline);
+        this.serviceContext = new Service(this.storageClientContext);
     }
     /**
      *
@@ -88793,25 +85499,25 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                                  `BlobEndpoint=https://myaccount.blob.core.windows.net/;QueueEndpoint=https://myaccount.queue.core.windows.net/;FileEndpoint=https://myaccount.file.core.windows.net/;TableEndpoint=https://myaccount.table.core.windows.net/;SharedAccessSignature=sasString`
      * @param options - Optional. Options to configure the HTTP pipeline.
      */
-    BlobServiceClient.fromConnectionString = function (connectionString, options) {
+    static fromConnectionString(connectionString, options) {
         options = options || {};
-        var extractedCreds = extractConnectionStringParts(connectionString);
+        const extractedCreds = extractConnectionStringParts(connectionString);
         if (extractedCreds.kind === "AccountConnString") {
             {
-                var sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
+                const sharedKeyCredential = new StorageSharedKeyCredential(extractedCreds.accountName, extractedCreds.accountKey);
                 options.proxyOptions = coreHttp.getDefaultProxySettings(extractedCreds.proxyUri);
-                var pipeline = newPipeline(sharedKeyCredential, options);
+                const pipeline = newPipeline(sharedKeyCredential, options);
                 return new BlobServiceClient(extractedCreds.url, pipeline);
             }
         }
         else if (extractedCreds.kind === "SASConnString") {
-            var pipeline = newPipeline(new AnonymousCredential(), options);
+            const pipeline = newPipeline(new AnonymousCredential(), options);
             return new BlobServiceClient(extractedCreds.url + "?" + extractedCreds.accountSas, pipeline);
         }
         else {
             throw new Error("Connection string must be either an Account connection string or a SAS connection string");
         }
-    };
+    }
     /**
      * Creates a {@link ContainerClient} object
      *
@@ -88824,9 +85530,9 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * const containerClient = blobServiceClient.getContainerClient("<container name>");
      * ```
      */
-    BlobServiceClient.prototype.getContainerClient = function (containerName) {
+    getContainerClient(containerName) {
         return new ContainerClient(appendToURLPath(this.url, encodeURIComponent(containerName)), this.pipeline);
-    };
+    }
     /**
      * Create a Blob container.
      *
@@ -88834,40 +85540,27 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to configure Container Create operation.
      * @returns Container creation response and the corresponding container client.
      */
-    BlobServiceClient.prototype.createContainer = function (containerName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, containerClient, containerCreateResponse, e_1;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-createContainer", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(containerName);
-                        return [4 /*yield*/, containerClient.create(updatedOptions)];
-                    case 2:
-                        containerCreateResponse = _b.sent();
-                        return [2 /*return*/, {
-                                containerClient: containerClient,
-                                containerCreateResponse: containerCreateResponse
-                            }];
-                    case 3:
-                        e_1 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_1.message
-                        });
-                        throw e_1;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async createContainer(containerName, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-createContainer", options);
+        try {
+            const containerClient = this.getContainerClient(containerName);
+            const containerCreateResponse = await containerClient.create(updatedOptions);
+            return {
+                containerClient,
+                containerCreateResponse
+            };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Deletes a Blob container.
      *
@@ -88875,35 +85568,23 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to configure Container Delete operation.
      * @returns Container deletion response.
      */
-    BlobServiceClient.prototype.deleteContainer = function (containerName, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, containerClient, e_2;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-deleteContainer", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(containerName);
-                        return [4 /*yield*/, containerClient.delete(updatedOptions)];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_2 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_2.message
-                        });
-                        throw e_2;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async deleteContainer(containerName, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-deleteContainer", options);
+        try {
+            const containerClient = this.getContainerClient(containerName);
+            return await containerClient.delete(updatedOptions);
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Restore a previously deleted Blob container.
      * This API is only functional if Container Soft Delete is enabled for the storage account associated with the container.
@@ -88913,39 +85594,27 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to configure Container Restore operation.
      * @returns Container deletion response.
      */
-    BlobServiceClient.prototype.undeleteContainer = function (deletedContainerName, deletedContainerVersion, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, containerClient, containerContext, containerUndeleteResponse, e_3;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-undeleteContainer", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(options.destinationContainerName || deletedContainerName);
-                        containerContext = new Container(containerClient["storageClientContext"]);
-                        return [4 /*yield*/, containerContext.restore(tslib.__assign({ deletedContainerName: deletedContainerName,
-                                deletedContainerVersion: deletedContainerVersion }, updatedOptions))];
-                    case 2:
-                        containerUndeleteResponse = _b.sent();
-                        return [2 /*return*/, { containerClient: containerClient, containerUndeleteResponse: containerUndeleteResponse }];
-                    case 3:
-                        e_3 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_3.message
-                        });
-                        throw e_3;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async undeleteContainer(deletedContainerName, deletedContainerVersion, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-undeleteContainer", options);
+        try {
+            const containerClient = this.getContainerClient(options.destinationContainerName || deletedContainerName);
+            // Hack to access a protected member.
+            const containerContext = new Container(containerClient["storageClientContext"]);
+            const containerUndeleteResponse = await containerContext.restore(Object.assign({ deletedContainerName,
+                deletedContainerVersion }, updatedOptions));
+            return { containerClient, containerUndeleteResponse };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Rename an existing Blob Container.
      *
@@ -88954,39 +85623,27 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to configure Container Rename operation.
      */
     // @ts-ignore Need to hide this interface for now. Make it public and turn on the live tests for it when the service is ready.
-    BlobServiceClient.prototype.renameContainer = function (sourceContainerName, destinationContainerName, options) {
+    async renameContainer(sourceContainerName, destinationContainerName, options = {}) {
         var _a;
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _b, span, updatedOptions, containerClient, containerContext, containerRenameResponse, e_4;
-            return tslib.__generator(this, function (_c) {
-                switch (_c.label) {
-                    case 0:
-                        _b = createSpan("BlobServiceClient-renameContainer", options), span = _b.span, updatedOptions = _b.updatedOptions;
-                        _c.label = 1;
-                    case 1:
-                        _c.trys.push([1, 3, 4, 5]);
-                        containerClient = this.getContainerClient(destinationContainerName);
-                        containerContext = new Container(containerClient["storageClientContext"]);
-                        return [4 /*yield*/, containerContext.rename(sourceContainerName, tslib.__assign(tslib.__assign({}, updatedOptions), { sourceLeaseId: (_a = options.sourceCondition) === null || _a === void 0 ? void 0 : _a.leaseId }))];
-                    case 2:
-                        containerRenameResponse = _c.sent();
-                        return [2 /*return*/, { containerClient: containerClient, containerRenameResponse: containerRenameResponse }];
-                    case 3:
-                        e_4 = _c.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_4.message
-                        });
-                        throw e_4;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+        const { span, updatedOptions } = createSpan("BlobServiceClient-renameContainer", options);
+        try {
+            const containerClient = this.getContainerClient(destinationContainerName);
+            // Hack to access a protected member.
+            const containerContext = new Container(containerClient["storageClientContext"]);
+            const containerRenameResponse = await containerContext.rename(sourceContainerName, Object.assign(Object.assign({}, updatedOptions), { sourceLeaseId: (_a = options.sourceCondition) === null || _a === void 0 ? void 0 : _a.leaseId }));
+            return { containerClient, containerRenameResponse };
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Gets the properties of a storage account’s Blob service, including properties
      * for Storage Analytics and CORS (Cross-Origin Resource Sharing) rules.
@@ -88995,34 +85652,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service Get Properties operation.
      * @returns Response data for the Service Get Properties operation.
      */
-    BlobServiceClient.prototype.getProperties = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_5;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getProperties", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getProperties(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_5 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_5.message
-                        });
-                        throw e_5;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getProperties(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getProperties", options);
+        try {
+            return await this.serviceContext.getProperties(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Sets properties for a storage account’s Blob service endpoint, including properties
      * for Storage Analytics, CORS (Cross-Origin Resource Sharing) rules and soft delete settings.
@@ -89032,34 +85677,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service Set Properties operation.
      * @returns Response data for the Service Set Properties operation.
      */
-    BlobServiceClient.prototype.setProperties = function (properties, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_6;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-setProperties", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.setProperties(properties, tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_6 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_6.message
-                        });
-                        throw e_6;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async setProperties(properties, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-setProperties", options);
+        try {
+            return await this.serviceContext.setProperties(properties, Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Retrieves statistics related to replication for the Blob service. It is only
      * available on the secondary location endpoint when read-access geo-redundant
@@ -89069,34 +85702,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service Get Statistics operation.
      * @returns Response data for the Service Get Statistics operation.
      */
-    BlobServiceClient.prototype.getStatistics = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_7;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getStatistics", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getStatistics(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_7 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_7.message
-                        });
-                        throw e_7;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getStatistics(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getStatistics", options);
+        try {
+            return await this.serviceContext.getStatistics(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Get Account Information operation returns the sku name and account kind
      * for the specified account.
@@ -89107,34 +85728,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service Get Account Info operation.
      * @returns Response data for the Service Get Account Info operation.
      */
-    BlobServiceClient.prototype.getAccountInfo = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_8;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getAccountInfo", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getAccountInfo(tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_8 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_8.message
-                        });
-                        throw e_8;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getAccountInfo(options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getAccountInfo", options);
+        try {
+            return await this.serviceContext.getAccountInfo(Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns a list of the containers under the specified account.
      * @see https://docs.microsoft.com/en-us/rest/api/storageservices/list-containers2
@@ -89149,34 +85758,22 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to the Service List Container Segment operation.
      * @returns Response data for the Service List Container Segment operation.
      */
-    BlobServiceClient.prototype.listContainersSegment = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, e_9;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-listContainersSegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.listContainersSegment(tslib.__assign(tslib.__assign(tslib.__assign({ abortSignal: options.abortSignal, marker: marker }, options), { include: typeof options.include === "string" ? [options.include] : options.include }), convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2: return [2 /*return*/, _b.sent()];
-                    case 3:
-                        e_9 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_9.message
-                        });
-                        throw e_9;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async listContainersSegment(marker, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-listContainersSegment", options);
+        try {
+            return await this.serviceContext.listContainersSegment(Object.assign(Object.assign(Object.assign({ abortSignal: options.abortSignal, marker }, options), { include: typeof options.include === "string" ? [options.include] : options.include }), convertTracingToRequestOptionsBase(updatedOptions)));
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * The Filter Blobs operation enables callers to list blobs across all containers whose tags
      * match a given search expression. Filter blobs searches across all containers within a
@@ -89195,44 +85792,31 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                          items. The marker value is opaque to the client.
      * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTagsSegment = function (tagFilterSqlExpression, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, wrappedResponse, e_10;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-findBlobsByTagsSegment", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.filterBlobs(tslib.__assign({ abortSignal: options.abortSignal, where: tagFilterSqlExpression, marker: marker, maxPageSize: options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        wrappedResponse = tslib.__assign(tslib.__assign({}, response), { _response: response._response, blobs: response.blobs.map(function (blob) {
-                                var _a;
-                                var tagValue = "";
-                                if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {
-                                    tagValue = blob.tags.blobTagSet[0].value;
-                                }
-                                return tslib.__assign(tslib.__assign({}, blob), { tags: toTags(blob.tags), tagValue: tagValue });
-                            }) });
-                        return [2 /*return*/, wrappedResponse];
-                    case 3:
-                        e_10 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_10.message
-                        });
-                        throw e_10;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async findBlobsByTagsSegment(tagFilterSqlExpression, marker, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-findBlobsByTagsSegment", options);
+        try {
+            const response = await this.serviceContext.filterBlobs(Object.assign({ abortSignal: options.abortSignal, where: tagFilterSqlExpression, marker, maxPageSize: options.maxPageSize }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const wrappedResponse = Object.assign(Object.assign({}, response), { _response: response._response, blobs: response.blobs.map((blob) => {
+                    var _a;
+                    let tagValue = "";
+                    if (((_a = blob.tags) === null || _a === void 0 ? void 0 : _a.blobTagSet.length) === 1) {
+                        tagValue = blob.tags.blobTagSet[0].value;
+                    }
+                    return Object.assign(Object.assign({}, blob), { tags: toTags(blob.tags), tagValue });
+                }) });
+            return wrappedResponse;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Returns an AsyncIterableIterator for ServiceFindBlobsByTagsSegmentResponse.
      *
@@ -89249,33 +85833,19 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                          items. The marker value is opaque to the client.
      * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTagsSegments = function (tagFilterSqlExpression, marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsSegments_1() {
-            var response;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 6];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options))];
-                    case 2:
-                        response = _a.sent();
-                        response.blobs = response.blobs || [];
-                        marker = response.continuationToken;
-                        return [4 /*yield*/, tslib.__await(response)];
-                    case 3: return [4 /*yield*/, _a.sent()];
-                    case 4:
-                        _a.sent();
-                        _a.label = 5;
-                    case 5:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 6;
-                    case 6: return [2 /*return*/];
-                }
-            });
+    findBlobsByTagsSegments(tagFilterSqlExpression, marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* findBlobsByTagsSegments_1() {
+            let response;
+            if (!!marker || marker === undefined) {
+                do {
+                    response = yield tslib.__await(this.findBlobsByTagsSegment(tagFilterSqlExpression, marker, options));
+                    response.blobs = response.blobs || [];
+                    marker = response.continuationToken;
+                    yield yield tslib.__await(response);
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for blobs.
      *
@@ -89285,49 +85855,25 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
      * @param options - Options to findBlobsByTagsItems.
      */
-    BlobServiceClient.prototype.findBlobsByTagsItems = function (tagFilterSqlExpression, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function findBlobsByTagsItems_1() {
-            var marker, _a, _b, segment, e_11_1;
-            var e_11, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        segment = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.blobs)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_11_1 = _d.sent();
-                        e_11 = { error: e_11_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_11) throw e_11.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    findBlobsByTagsItems(tagFilterSqlExpression, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* findBlobsByTagsItems_1() {
+            var e_1, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.findBlobsByTagsSegments(tagFilterSqlExpression, marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const segment = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(segment.blobs)));
                 }
-            });
+            }
+            catch (e_1_1) { e_1 = { error: e_1_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_1) throw e_1.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to find all blobs with specified tag
      * under the specified account.
@@ -89407,36 +85953,31 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                                         however, only a subset of the OData filter syntax is supported in the Blob service.
      * @param options - Options to find blobs by tags.
      */
-    BlobServiceClient.prototype.findBlobsByTags = function (tagFilterSqlExpression, options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    findBlobsByTags(tagFilterSqlExpression, options = {}) {
         // AsyncIterableIterator to iterate over blobs
-        var listSegmentOptions = tslib.__assign({}, options);
-        var iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
-        return _a = {
-                /**
-                 * The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const listSegmentOptions = Object.assign({}, options);
+        const iter = this.findBlobsByTagsItems(tagFilterSqlExpression, listSegmentOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
              * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
              * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.findBlobsByTagsSegments(tagFilterSqlExpression, settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
+            }
+        };
+    }
     /**
      * Returns an AsyncIterableIterator for ServiceListContainersSegmentResponses
      *
@@ -89449,83 +85990,44 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *                        items. The marker value is opaque to the client.
      * @param options - Options to list containers operation.
      */
-    BlobServiceClient.prototype.listSegments = function (marker, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listSegments_1() {
-            var listContainersSegmentResponse;
-            return tslib.__generator(this, function (_a) {
-                switch (_a.label) {
-                    case 0:
-                        if (!(!!marker || marker === undefined)) return [3 /*break*/, 7];
-                        _a.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(this.listContainersSegment(marker, options))];
-                    case 2:
-                        listContainersSegmentResponse = _a.sent();
-                        listContainersSegmentResponse.containerItems =
-                            listContainersSegmentResponse.containerItems || [];
-                        marker = listContainersSegmentResponse.continuationToken;
-                        return [4 /*yield*/, tslib.__await(listContainersSegmentResponse)];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_a.sent()])];
-                    case 4: return [4 /*yield*/, _a.sent()];
-                    case 5:
-                        _a.sent();
-                        _a.label = 6;
-                    case 6:
-                        if (marker) return [3 /*break*/, 1];
-                        _a.label = 7;
-                    case 7: return [2 /*return*/];
-                }
-            });
+    listSegments(marker, options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listSegments_1() {
+            let listContainersSegmentResponse;
+            if (!!marker || marker === undefined) {
+                do {
+                    listContainersSegmentResponse = yield tslib.__await(this.listContainersSegment(marker, options));
+                    listContainersSegmentResponse.containerItems =
+                        listContainersSegmentResponse.containerItems || [];
+                    marker = listContainersSegmentResponse.continuationToken;
+                    yield yield tslib.__await(yield tslib.__await(listContainersSegmentResponse));
+                } while (marker);
+            }
         });
-    };
+    }
     /**
      * Returns an AsyncIterableIterator for Container Items
      *
      * @param options - Options to list containers operation.
      */
-    BlobServiceClient.prototype.listItems = function (options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__asyncGenerator(this, arguments, function listItems_1() {
-            var marker, _a, _b, segment, e_12_1;
-            var e_12, _c;
-            return tslib.__generator(this, function (_d) {
-                switch (_d.label) {
-                    case 0:
-                        _d.trys.push([0, 7, 8, 13]);
-                        _a = tslib.__asyncValues(this.listSegments(marker, options));
-                        _d.label = 1;
-                    case 1: return [4 /*yield*/, tslib.__await(_a.next())];
-                    case 2:
-                        if (!(_b = _d.sent(), !_b.done)) return [3 /*break*/, 6];
-                        segment = _b.value;
-                        return [5 /*yield**/, tslib.__values(tslib.__asyncDelegator(tslib.__asyncValues(segment.containerItems)))];
-                    case 3: return [4 /*yield*/, tslib.__await.apply(void 0, [_d.sent()])];
-                    case 4:
-                        _d.sent();
-                        _d.label = 5;
-                    case 5: return [3 /*break*/, 1];
-                    case 6: return [3 /*break*/, 13];
-                    case 7:
-                        e_12_1 = _d.sent();
-                        e_12 = { error: e_12_1 };
-                        return [3 /*break*/, 13];
-                    case 8:
-                        _d.trys.push([8, , 11, 12]);
-                        if (!(_b && !_b.done && (_c = _a.return))) return [3 /*break*/, 10];
-                        return [4 /*yield*/, tslib.__await(_c.call(_a))];
-                    case 9:
-                        _d.sent();
-                        _d.label = 10;
-                    case 10: return [3 /*break*/, 12];
-                    case 11:
-                        if (e_12) throw e_12.error;
-                        return [7 /*endfinally*/];
-                    case 12: return [7 /*endfinally*/];
-                    case 13: return [2 /*return*/];
+    listItems(options = {}) {
+        return tslib.__asyncGenerator(this, arguments, function* listItems_1() {
+            var e_2, _a;
+            let marker;
+            try {
+                for (var _b = tslib.__asyncValues(this.listSegments(marker, options)), _c; _c = yield tslib.__await(_b.next()), !_c.done;) {
+                    const segment = _c.value;
+                    yield tslib.__await(yield* tslib.__asyncDelegator(tslib.__asyncValues(segment.containerItems)));
                 }
-            });
+            }
+            catch (e_2_1) { e_2 = { error: e_2_1 }; }
+            finally {
+                try {
+                    if (_c && !_c.done && (_a = _b.return)) yield tslib.__await(_a.call(_b));
+                }
+                finally { if (e_2) throw e_2.error; }
+            }
         });
-    };
+    }
     /**
      * Returns an async iterable iterator to list all the containers
      * under the specified account.
@@ -89600,14 +86102,11 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Options to list containers.
      * @returns An asyncIterableIterator that supports paging.
      */
-    BlobServiceClient.prototype.listContainers = function (options) {
-        var _a;
-        var _this = this;
-        if (options === void 0) { options = {}; }
+    listContainers(options = {}) {
         if (options.prefix === "") {
             options.prefix = undefined;
         }
-        var include = [];
+        const include = [];
         if (options.includeDeleted) {
             include.push("deleted");
         }
@@ -89615,31 +86114,29 @@ var BlobServiceClient = /** @class */ (function (_super) {
             include.push("metadata");
         }
         // AsyncIterableIterator to iterate over containers
-        var listSegmentOptions = tslib.__assign(tslib.__assign({}, options), (include.length > 0 ? { include: include } : {}));
-        var iter = this.listItems(listSegmentOptions);
-        return _a = {
-                /**
-                 * The next method, part of the iteration protocol
-                 */
-                next: function () {
-                    return iter.next();
-                }
+        const listSegmentOptions = Object.assign(Object.assign({}, options), (include.length > 0 ? { include } : {}));
+        const iter = this.listItems(listSegmentOptions);
+        return {
+            /**
+             * The next method, part of the iteration protocol
+             */
+            next() {
+                return iter.next();
             },
             /**
              * The connection to the async iterator, part of the iteration protocol
              */
-            _a[Symbol.asyncIterator] = function () {
+            [Symbol.asyncIterator]() {
                 return this;
             },
             /**
              * Return an AsyncIterableIterator that works a page at a time
              */
-            _a.byPage = function (settings) {
-                if (settings === void 0) { settings = {}; }
-                return _this.listSegments(settings.continuationToken, tslib.__assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
-            },
-            _a;
-    };
+            byPage: (settings = {}) => {
+                return this.listSegments(settings.continuationToken, Object.assign({ maxPageSize: settings.maxPageSize }, listSegmentOptions));
+            }
+        };
+    }
     /**
      * ONLY AVAILABLE WHEN USING BEARER TOKEN AUTHENTICATION (TokenCredential).
      *
@@ -89651,49 +86148,36 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param startsOn -      The start time for the user delegation SAS. Must be within 7 days of the current time
      * @param expiresOn -     The end time for the user delegation SAS. Must be within 7 days of the current time
      */
-    BlobServiceClient.prototype.getUserDelegationKey = function (startsOn, expiresOn, options) {
-        if (options === void 0) { options = {}; }
-        return tslib.__awaiter(this, void 0, void 0, function () {
-            var _a, span, updatedOptions, response, userDelegationKey, res, e_13;
-            return tslib.__generator(this, function (_b) {
-                switch (_b.label) {
-                    case 0:
-                        _a = createSpan("BlobServiceClient-getUserDelegationKey", options), span = _a.span, updatedOptions = _a.updatedOptions;
-                        _b.label = 1;
-                    case 1:
-                        _b.trys.push([1, 3, 4, 5]);
-                        return [4 /*yield*/, this.serviceContext.getUserDelegationKey({
-                                startsOn: truncatedISO8061Date(startsOn, false),
-                                expiresOn: truncatedISO8061Date(expiresOn, false)
-                            }, tslib.__assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)))];
-                    case 2:
-                        response = _b.sent();
-                        userDelegationKey = {
-                            signedObjectId: response.signedObjectId,
-                            signedTenantId: response.signedTenantId,
-                            signedStartsOn: new Date(response.signedStartsOn),
-                            signedExpiresOn: new Date(response.signedExpiresOn),
-                            signedService: response.signedService,
-                            signedVersion: response.signedVersion,
-                            value: response.value
-                        };
-                        res = tslib.__assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);
-                        return [2 /*return*/, res];
-                    case 3:
-                        e_13 = _b.sent();
-                        span.setStatus({
-                            code: coreTracing.SpanStatusCode.ERROR,
-                            message: e_13.message
-                        });
-                        throw e_13;
-                    case 4:
-                        span.end();
-                        return [7 /*endfinally*/];
-                    case 5: return [2 /*return*/];
-                }
+    async getUserDelegationKey(startsOn, expiresOn, options = {}) {
+        const { span, updatedOptions } = createSpan("BlobServiceClient-getUserDelegationKey", options);
+        try {
+            const response = await this.serviceContext.getUserDelegationKey({
+                startsOn: truncatedISO8061Date(startsOn, false),
+                expiresOn: truncatedISO8061Date(expiresOn, false)
+            }, Object.assign({ abortSignal: options.abortSignal }, convertTracingToRequestOptionsBase(updatedOptions)));
+            const userDelegationKey = {
+                signedObjectId: response.signedObjectId,
+                signedTenantId: response.signedTenantId,
+                signedStartsOn: new Date(response.signedStartsOn),
+                signedExpiresOn: new Date(response.signedExpiresOn),
+                signedService: response.signedService,
+                signedVersion: response.signedVersion,
+                value: response.value
+            };
+            const res = Object.assign({ _response: response._response, requestId: response.requestId, clientRequestId: response.clientRequestId, version: response.version, date: response.date, errorCode: response.errorCode }, userDelegationKey);
+            return res;
+        }
+        catch (e) {
+            span.setStatus({
+                code: coreTracing.SpanStatusCode.ERROR,
+                message: e.message
             });
-        });
-    };
+            throw e;
+        }
+        finally {
+            span.end();
+        }
+    }
     /**
      * Creates a BlobBatchClient object to conduct batch operations.
      *
@@ -89701,9 +86185,9 @@ var BlobServiceClient = /** @class */ (function (_super) {
      *
      * @returns A new BlobBatchClient object for this service.
      */
-    BlobServiceClient.prototype.getBlobBatchClient = function () {
+    getBlobBatchClient() {
         return new BlobBatchClient(this.url, this.pipeline);
-    };
+    }
     /**
      * Only available for BlobServiceClient constructed with a shared key credential.
      *
@@ -89718,24 +86202,20 @@ var BlobServiceClient = /** @class */ (function (_super) {
      * @param options - Optional parameters.
      * @returns An account SAS URI consisting of the URI to the resource represented by this client, followed by the generated SAS token.
      */
-    BlobServiceClient.prototype.generateAccountSasUrl = function (expiresOn, permissions, resourceTypes, options) {
-        if (permissions === void 0) { permissions = AccountSASPermissions.parse("r"); }
-        if (resourceTypes === void 0) { resourceTypes = "sco"; }
-        if (options === void 0) { options = {}; }
+    generateAccountSasUrl(expiresOn, permissions = AccountSASPermissions.parse("r"), resourceTypes = "sco", options = {}) {
         if (!(this.credential instanceof StorageSharedKeyCredential)) {
             throw RangeError("Can only generate the account SAS when the client is initialized with a shared key credential");
         }
         if (expiresOn === undefined) {
-            var now = new Date();
+            const now = new Date();
             expiresOn = new Date(now.getTime() + 3600 * 1000);
         }
-        var sas = generateAccountSASQueryParameters(tslib.__assign({ permissions: permissions,
-            expiresOn: expiresOn,
-            resourceTypes: resourceTypes, services: AccountSASServices.parse("b").toString() }, options), this.credential).toString();
+        const sas = generateAccountSASQueryParameters(Object.assign({ permissions,
+            expiresOn,
+            resourceTypes, services: AccountSASServices.parse("b").toString() }, options), this.credential).toString();
         return appendToURLQuery(this.url, sas);
-    };
-    return BlobServiceClient;
-}(StorageClient));
+    }
+}
 
 Object.defineProperty(exports, 'BaseRequestPolicy', {
     enumerable: true,
@@ -91034,9 +87514,8 @@ module.exports = require("url");
 /***/ }),
 /* 836 */,
 /* 837 */,
-/* 838 */,
-/* 839 */
-/***/ (function(__unusedmodule, exports) {
+/* 838 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
 
 "use strict";
 
@@ -91056,9 +87535,45 @@ module.exports = require("url");
  * limitations under the License.
  */
 Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=TimedEvent.js.map
+exports.deleteBaggage = exports.setBaggage = exports.getBaggage = void 0;
+var context_1 = __webpack_require__(132);
+/**
+ * Baggage key
+ */
+var BAGGAGE_KEY = context_1.createContextKey('OpenTelemetry Baggage Key');
+/**
+ * Retrieve the current baggage from the given context
+ *
+ * @param {Context} Context that manage all context values
+ * @returns {Baggage} Extracted baggage from the context
+ */
+function getBaggage(context) {
+    return context.getValue(BAGGAGE_KEY) || undefined;
+}
+exports.getBaggage = getBaggage;
+/**
+ * Store a baggage in the given context
+ *
+ * @param {Context} Context that manage all context values
+ * @param {Baggage} baggage that will be set in the actual context
+ */
+function setBaggage(context, baggage) {
+    return context.setValue(BAGGAGE_KEY, baggage);
+}
+exports.setBaggage = setBaggage;
+/**
+ * Delete the baggage stored in the given context
+ *
+ * @param {Context} Context that manage all context values
+ */
+function deleteBaggage(context) {
+    return context.deleteValue(BAGGAGE_KEY);
+}
+exports.deleteBaggage = deleteBaggage;
+//# sourceMappingURL=context-helpers.js.map
 
 /***/ }),
+/* 839 */,
 /* 840 */,
 /* 841 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
@@ -91359,30 +87874,7 @@ exports.hashFiles = hashFiles;
 
 /***/ }),
 /* 850 */,
-/* 851 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=link_context.js.map
-
-/***/ }),
+/* 851 */,
 /* 852 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -91881,7 +88373,63 @@ WebIDLAlgorithm_1.idl_defineConst(AttrImpl.prototype, "specified", true);
 /* 869 */,
 /* 870 */,
 /* 871 */,
-/* 872 */,
+/* 872 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.baggageEntryMetadataFromString = exports.createBaggage = void 0;
+var __1 = __webpack_require__(440);
+var baggage_impl_1 = __webpack_require__(666);
+var symbol_1 = __webpack_require__(561);
+/**
+ * Create a new Baggage with optional entries
+ *
+ * @param entries An array of baggage entries the new baggage should contain
+ */
+function createBaggage(entries) {
+    if (entries === void 0) { entries = {}; }
+    return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));
+}
+exports.createBaggage = createBaggage;
+/**
+ * Create a serializable BaggageEntryMetadata object from a string.
+ *
+ * @param str string metadata. Format is currently not defined by the spec and has no special meaning.
+ *
+ */
+function baggageEntryMetadataFromString(str) {
+    if (typeof str !== 'string') {
+        __1.diag.error("Cannot create baggage metadata from unknown type: " + typeof str);
+        str = '';
+    }
+    return {
+        __TYPE__: symbol_1.baggageEntryMetadataSymbol,
+        toString: function () {
+            return str;
+        },
+    };
+}
+exports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;
+//# sourceMappingURL=utils.js.map
+
+/***/ }),
 /* 873 */
 /***/ (function(__unusedmodule, exports, __webpack_require__) {
 
@@ -92774,9 +89322,11 @@ module.exports = compare
  */
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.TraceAPI = void 0;
+var global_utils_1 = __webpack_require__(525);
 var ProxyTracerProvider_1 = __webpack_require__(394);
 var spancontext_utils_1 = __webpack_require__(453);
-var global_utils_1 = __webpack_require__(525);
+var context_utils_1 = __webpack_require__(969);
+var diag_1 = __webpack_require__(118);
 var API_NAME = 'trace';
 /**
  * Singleton object which represents the entry point to the OpenTelemetry Tracing API
@@ -92785,7 +89335,13 @@ var TraceAPI = /** @class */ (function () {
     /** Empty private constructor prevents end users from constructing a new instance of the API */
     function TraceAPI() {
         this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
+        this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;
         this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;
+        this.deleteSpan = context_utils_1.deleteSpan;
+        this.getSpan = context_utils_1.getSpan;
+        this.getSpanContext = context_utils_1.getSpanContext;
+        this.setSpan = context_utils_1.setSpan;
+        this.setSpanContext = context_utils_1.setSpanContext;
     }
     /** Get the singleton instance of the Trace API */
     TraceAPI.getInstance = function () {
@@ -92795,12 +89351,16 @@ var TraceAPI = /** @class */ (function () {
         return this._instance;
     };
     /**
-     * Set the current global tracer. Returns the initialized global tracer provider
+     * Set the current global tracer.
+     *
+     * @returns true if the tracer provider was successfully registered, else false
      */
     TraceAPI.prototype.setGlobalTracerProvider = function (provider) {
-        this._proxyTracerProvider.setDelegate(provider);
-        global_utils_1.registerGlobal(API_NAME, this._proxyTracerProvider);
-        return this._proxyTracerProvider;
+        var success = global_utils_1.registerGlobal(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());
+        if (success) {
+            this._proxyTracerProvider.setDelegate(provider);
+        }
+        return success;
     };
     /**
      * Returns the global tracer provider.
@@ -92816,7 +89376,7 @@ var TraceAPI = /** @class */ (function () {
     };
     /** Remove the global tracer provider */
     TraceAPI.prototype.disable = function () {
-        global_utils_1.unregisterGlobal(API_NAME);
+        global_utils_1.unregisterGlobal(API_NAME, diag_1.DiagAPI.instance());
         this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();
     };
     return TraceAPI;
@@ -92931,7 +89491,30 @@ module.exports = (versions, range, options) => {
 /***/ }),
 /* 878 */,
 /* 879 */,
-/* 880 */,
+/* 880 */
+/***/ (function(__unusedmodule, exports) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=types.js.map
+
+/***/ }),
 /* 881 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -95655,312 +92238,312 @@ Object.defineProperty(exports, "__esModule", { value: true });
 /* 909 */
 /***/ (function(module) {
 
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global global, define, System, Reflect, Promise */
-var __extends;
-var __assign;
-var __rest;
-var __decorate;
-var __param;
-var __metadata;
-var __awaiter;
-var __generator;
-var __exportStar;
-var __values;
-var __read;
-var __spread;
-var __spreadArrays;
-var __spreadArray;
-var __await;
-var __asyncGenerator;
-var __asyncDelegator;
-var __asyncValues;
-var __makeTemplateObject;
-var __importStar;
-var __importDefault;
-var __classPrivateFieldGet;
-var __classPrivateFieldSet;
-var __createBinding;
-(function (factory) {
-    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
-    if (typeof define === "function" && define.amd) {
-        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
-    }
-    else if ( true && typeof module.exports === "object") {
-        factory(createExporter(root, createExporter(module.exports)));
-    }
-    else {
-        factory(createExporter(root));
-    }
-    function createExporter(exports, previous) {
-        if (exports !== root) {
-            if (typeof Object.create === "function") {
-                Object.defineProperty(exports, "__esModule", { value: true });
-            }
-            else {
-                exports.__esModule = true;
-            }
-        }
-        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
-    }
-})
-(function (exporter) {
-    var extendStatics = Object.setPrototypeOf ||
-        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
-        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
-
-    __extends = function (d, b) {
-        if (typeof b !== "function" && b !== null)
-            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
-        extendStatics(d, b);
-        function __() { this.constructor = d; }
-        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-    };
-
-    __assign = Object.assign || function (t) {
-        for (var s, i = 1, n = arguments.length; i < n; i++) {
-            s = arguments[i];
-            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-        }
-        return t;
-    };
-
-    __rest = function (s, e) {
-        var t = {};
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
-            t[p] = s[p];
-        if (s != null && typeof Object.getOwnPropertySymbols === "function")
-            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
-                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
-                    t[p[i]] = s[p[i]];
-            }
-        return t;
-    };
-
-    __decorate = function (decorators, target, key, desc) {
-        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
-        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
-        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
-        return c > 3 && r && Object.defineProperty(target, key, r), r;
-    };
-
-    __param = function (paramIndex, decorator) {
-        return function (target, key) { decorator(target, key, paramIndex); }
-    };
-
-    __metadata = function (metadataKey, metadataValue) {
-        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-    };
-
-    __awaiter = function (thisArg, _arguments, P, generator) {
-        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-        return new (P || (P = Promise))(function (resolve, reject) {
-            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-            step((generator = generator.apply(thisArg, _arguments || [])).next());
-        });
-    };
-
-    __generator = function (thisArg, body) {
-        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-        function verb(n) { return function (v) { return step([n, v]); }; }
-        function step(op) {
-            if (f) throw new TypeError("Generator is already executing.");
-            while (_) try {
-                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-                if (y = 0, t) op = [op[0] & 2, t.value];
-                switch (op[0]) {
-                    case 0: case 1: t = op; break;
-                    case 4: _.label++; return { value: op[1], done: false };
-                    case 5: _.label++; y = op[1]; op = [0]; continue;
-                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                    default:
-                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                        if (t[2]) _.ops.pop();
-                        _.trys.pop(); continue;
-                }
-                op = body.call(thisArg, _);
-            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-        }
-    };
-
-    __exportStar = function(m, o) {
-        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-    };
-
-    __createBinding = Object.create ? (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-    }) : (function(o, m, k, k2) {
-        if (k2 === undefined) k2 = k;
-        o[k2] = m[k];
-    });
-
-    __values = function (o) {
-        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
-        if (m) return m.call(o);
-        if (o && typeof o.length === "number") return {
-            next: function () {
-                if (o && i >= o.length) o = void 0;
-                return { value: o && o[i++], done: !o };
-            }
-        };
-        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-    };
-
-    __read = function (o, n) {
-        var m = typeof Symbol === "function" && o[Symbol.iterator];
-        if (!m) return o;
-        var i = m.call(o), r, ar = [], e;
-        try {
-            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
-        }
-        catch (error) { e = { error: error }; }
-        finally {
-            try {
-                if (r && !r.done && (m = i["return"])) m.call(i);
-            }
-            finally { if (e) throw e.error; }
-        }
-        return ar;
-    };
-
-    /** @deprecated */
-    __spread = function () {
-        for (var ar = [], i = 0; i < arguments.length; i++)
-            ar = ar.concat(__read(arguments[i]));
-        return ar;
-    };
-
-    /** @deprecated */
-    __spreadArrays = function () {
-        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
-        for (var r = Array(s), k = 0, i = 0; i < il; i++)
-            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
-                r[k] = a[j];
-        return r;
-    };
-
-    __spreadArray = function (to, from, pack) {
-        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
-            if (ar || !(i in from)) {
-                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
-                ar[i] = from[i];
-            }
-        }
-        return to.concat(ar || from);
-    };
-
-    __await = function (v) {
-        return this instanceof __await ? (this.v = v, this) : new __await(v);
-    };
-
-    __asyncGenerator = function (thisArg, _arguments, generator) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var g = generator.apply(thisArg, _arguments || []), i, q = [];
-        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
-        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
-        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
-        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
-        function fulfill(value) { resume("next", value); }
-        function reject(value) { resume("throw", value); }
-        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-    };
-
-    __asyncDelegator = function (o) {
-        var i, p;
-        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
-        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-    };
-
-    __asyncValues = function (o) {
-        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
-        var m = o[Symbol.asyncIterator], i;
-        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
-        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
-        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-    };
-
-    __makeTemplateObject = function (cooked, raw) {
-        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
-        return cooked;
-    };
-
-    var __setModuleDefault = Object.create ? (function(o, v) {
-        Object.defineProperty(o, "default", { enumerable: true, value: v });
-    }) : function(o, v) {
-        o["default"] = v;
-    };
-
-    __importStar = function (mod) {
-        if (mod && mod.__esModule) return mod;
-        var result = {};
-        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
-        __setModuleDefault(result, mod);
-        return result;
-    };
-
-    __importDefault = function (mod) {
-        return (mod && mod.__esModule) ? mod : { "default": mod };
-    };
-
-    __classPrivateFieldGet = function (receiver, state, kind, f) {
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
-        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-    };
-
-    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
-        if (kind === "m") throw new TypeError("Private method is not writable");
-        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
-        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
-        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-    };
-
-    exporter("__extends", __extends);
-    exporter("__assign", __assign);
-    exporter("__rest", __rest);
-    exporter("__decorate", __decorate);
-    exporter("__param", __param);
-    exporter("__metadata", __metadata);
-    exporter("__awaiter", __awaiter);
-    exporter("__generator", __generator);
-    exporter("__exportStar", __exportStar);
-    exporter("__createBinding", __createBinding);
-    exporter("__values", __values);
-    exporter("__read", __read);
-    exporter("__spread", __spread);
-    exporter("__spreadArrays", __spreadArrays);
-    exporter("__spreadArray", __spreadArray);
-    exporter("__await", __await);
-    exporter("__asyncGenerator", __asyncGenerator);
-    exporter("__asyncDelegator", __asyncDelegator);
-    exporter("__asyncValues", __asyncValues);
-    exporter("__makeTemplateObject", __makeTemplateObject);
-    exporter("__importStar", __importStar);
-    exporter("__importDefault", __importDefault);
-    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
-    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
-});
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+/* global global, define, System, Reflect, Promise */
+var __extends;
+var __assign;
+var __rest;
+var __decorate;
+var __param;
+var __metadata;
+var __awaiter;
+var __generator;
+var __exportStar;
+var __values;
+var __read;
+var __spread;
+var __spreadArrays;
+var __spreadArray;
+var __await;
+var __asyncGenerator;
+var __asyncDelegator;
+var __asyncValues;
+var __makeTemplateObject;
+var __importStar;
+var __importDefault;
+var __classPrivateFieldGet;
+var __classPrivateFieldSet;
+var __createBinding;
+(function (factory) {
+    var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {};
+    if (typeof define === "function" && define.amd) {
+        define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); });
+    }
+    else if ( true && typeof module.exports === "object") {
+        factory(createExporter(root, createExporter(module.exports)));
+    }
+    else {
+        factory(createExporter(root));
+    }
+    function createExporter(exports, previous) {
+        if (exports !== root) {
+            if (typeof Object.create === "function") {
+                Object.defineProperty(exports, "__esModule", { value: true });
+            }
+            else {
+                exports.__esModule = true;
+            }
+        }
+        return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };
+    }
+})
+(function (exporter) {
+    var extendStatics = Object.setPrototypeOf ||
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
+
+    __extends = function (d, b) {
+        if (typeof b !== "function" && b !== null)
+            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+        extendStatics(d, b);
+        function __() { this.constructor = d; }
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    };
+
+    __assign = Object.assign || function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+
+    __rest = function (s, e) {
+        var t = {};
+        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+            t[p] = s[p];
+        if (s != null && typeof Object.getOwnPropertySymbols === "function")
+            for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+                if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+                    t[p[i]] = s[p[i]];
+            }
+        return t;
+    };
+
+    __decorate = function (decorators, target, key, desc) {
+        var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+        if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+        else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+        return c > 3 && r && Object.defineProperty(target, key, r), r;
+    };
+
+    __param = function (paramIndex, decorator) {
+        return function (target, key) { decorator(target, key, paramIndex); }
+    };
+
+    __metadata = function (metadataKey, metadataValue) {
+        if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+    };
+
+    __awaiter = function (thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    };
+
+    __generator = function (thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    };
+
+    __exportStar = function(m, o) {
+        for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
+    };
+
+    __createBinding = Object.create ? (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
+    }) : (function(o, m, k, k2) {
+        if (k2 === undefined) k2 = k;
+        o[k2] = m[k];
+    });
+
+    __values = function (o) {
+        var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
+        if (m) return m.call(o);
+        if (o && typeof o.length === "number") return {
+            next: function () {
+                if (o && i >= o.length) o = void 0;
+                return { value: o && o[i++], done: !o };
+            }
+        };
+        throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
+    };
+
+    __read = function (o, n) {
+        var m = typeof Symbol === "function" && o[Symbol.iterator];
+        if (!m) return o;
+        var i = m.call(o), r, ar = [], e;
+        try {
+            while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
+        }
+        catch (error) { e = { error: error }; }
+        finally {
+            try {
+                if (r && !r.done && (m = i["return"])) m.call(i);
+            }
+            finally { if (e) throw e.error; }
+        }
+        return ar;
+    };
+
+    /** @deprecated */
+    __spread = function () {
+        for (var ar = [], i = 0; i < arguments.length; i++)
+            ar = ar.concat(__read(arguments[i]));
+        return ar;
+    };
+
+    /** @deprecated */
+    __spreadArrays = function () {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    };
+
+    __spreadArray = function (to, from, pack) {
+        if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+            if (ar || !(i in from)) {
+                if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+                ar[i] = from[i];
+            }
+        }
+        return to.concat(ar || Array.prototype.slice.call(from));
+    };
+
+    __await = function (v) {
+        return this instanceof __await ? (this.v = v, this) : new __await(v);
+    };
+
+    __asyncGenerator = function (thisArg, _arguments, generator) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var g = generator.apply(thisArg, _arguments || []), i, q = [];
+        return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
+        function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
+        function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
+        function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);  }
+        function fulfill(value) { resume("next", value); }
+        function reject(value) { resume("throw", value); }
+        function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
+    };
+
+    __asyncDelegator = function (o) {
+        var i, p;
+        return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
+        function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
+    };
+
+    __asyncValues = function (o) {
+        if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+        var m = o[Symbol.asyncIterator], i;
+        return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
+        function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
+        function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
+    };
+
+    __makeTemplateObject = function (cooked, raw) {
+        if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
+        return cooked;
+    };
+
+    var __setModuleDefault = Object.create ? (function(o, v) {
+        Object.defineProperty(o, "default", { enumerable: true, value: v });
+    }) : function(o, v) {
+        o["default"] = v;
+    };
+
+    __importStar = function (mod) {
+        if (mod && mod.__esModule) return mod;
+        var result = {};
+        if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+        __setModuleDefault(result, mod);
+        return result;
+    };
+
+    __importDefault = function (mod) {
+        return (mod && mod.__esModule) ? mod : { "default": mod };
+    };
+
+    __classPrivateFieldGet = function (receiver, state, kind, f) {
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
+        return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
+    };
+
+    __classPrivateFieldSet = function (receiver, state, value, kind, f) {
+        if (kind === "m") throw new TypeError("Private method is not writable");
+        if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
+        if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
+        return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
+    };
+
+    exporter("__extends", __extends);
+    exporter("__assign", __assign);
+    exporter("__rest", __rest);
+    exporter("__decorate", __decorate);
+    exporter("__param", __param);
+    exporter("__metadata", __metadata);
+    exporter("__awaiter", __awaiter);
+    exporter("__generator", __generator);
+    exporter("__exportStar", __exportStar);
+    exporter("__createBinding", __createBinding);
+    exporter("__values", __values);
+    exporter("__read", __read);
+    exporter("__spread", __spread);
+    exporter("__spreadArrays", __spreadArrays);
+    exporter("__spreadArray", __spreadArray);
+    exporter("__await", __await);
+    exporter("__asyncGenerator", __asyncGenerator);
+    exporter("__asyncDelegator", __asyncDelegator);
+    exporter("__asyncValues", __asyncValues);
+    exporter("__makeTemplateObject", __makeTemplateObject);
+    exporter("__importStar", __importStar);
+    exporter("__importDefault", __importDefault);
+    exporter("__classPrivateFieldGet", __classPrivateFieldGet);
+    exporter("__classPrivateFieldSet", __classPrivateFieldSet);
+});
 
 
 /***/ }),
@@ -99943,30 +96526,7 @@ WebIDLAlgorithm_1.idl_defineConst(NodeImpl.prototype, "DOCUMENT_POSITION_IMPLEME
 /***/ }),
 /* 936 */,
 /* 937 */,
-/* 938 */
-/***/ (function(__unusedmodule, exports) {
-
-"use strict";
-
-/*
- * Copyright The OpenTelemetry Authors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-Object.defineProperty(exports, "__esModule", { value: true });
-//# sourceMappingURL=Baggage.js.map
-
-/***/ }),
+/* 938 */,
 /* 939 */
 /***/ (function(module, __unusedexports, __webpack_require__) {
 
@@ -100674,7 +97234,86 @@ var EmptySetIterator = /** @class */ (function () {
 //# sourceMappingURL=EmptySet.js.map
 
 /***/ }),
-/* 969 */,
+/* 969 */
+/***/ (function(__unusedmodule, exports, __webpack_require__) {
+
+"use strict";
+
+/*
+ * Copyright The OpenTelemetry Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getSpan = void 0;
+var context_1 = __webpack_require__(132);
+var NonRecordingSpan_1 = __webpack_require__(437);
+/**
+ * span key
+ */
+var SPAN_KEY = context_1.createContextKey('OpenTelemetry Context Key SPAN');
+/**
+ * Return the span if one exists
+ *
+ * @param context context to get span from
+ */
+function getSpan(context) {
+    return context.getValue(SPAN_KEY) || undefined;
+}
+exports.getSpan = getSpan;
+/**
+ * Set the span on a context
+ *
+ * @param context context to use as parent
+ * @param span span to set active
+ */
+function setSpan(context, span) {
+    return context.setValue(SPAN_KEY, span);
+}
+exports.setSpan = setSpan;
+/**
+ * Remove current span stored in the context
+ *
+ * @param context context to delete span from
+ */
+function deleteSpan(context) {
+    return context.deleteValue(SPAN_KEY);
+}
+exports.deleteSpan = deleteSpan;
+/**
+ * Wrap span context in a NoopSpan and set as span in a new
+ * context
+ *
+ * @param context context to set active span on
+ * @param spanContext span context to be wrapped
+ */
+function setSpanContext(context, spanContext) {
+    return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));
+}
+exports.setSpanContext = setSpanContext;
+/**
+ * Get the span context of the span if it exists.
+ *
+ * @param context context to get values from
+ */
+function getSpanContext(context) {
+    var _a;
+    return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();
+}
+exports.getSpanContext = getSpanContext;
+//# sourceMappingURL=context-utils.js.map
+
+/***/ }),
 /* 970 */
 /***/ (function(__unusedmodule, exports) {
 
@@ -101809,7 +98448,7 @@ exports.exec = exec;
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.isCompatible = exports._makeCompatibilityCheck = void 0;
 var version_1 = __webpack_require__(133);
-var re = /^(\d+)\.(\d+)\.(\d+)(?:-(.*))?$/;
+var re = /^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;
 /**
  * Create a function to test an API version to see if it is compatible with the provided ownVersion.
  *
@@ -101838,7 +98477,14 @@ function _makeCompatibilityCheck(ownVersion) {
         major: +myVersionMatch[1],
         minor: +myVersionMatch[2],
         patch: +myVersionMatch[3],
+        prerelease: myVersionMatch[4],
     };
+    // if ownVersion has a prerelease tag, versions must match exactly
+    if (ownVersionParsed.prerelease != null) {
+        return function isExactmatch(globalVersion) {
+            return globalVersion === ownVersion;
+        };
+    }
     function _reject(v) {
         rejectedVersions.add(v);
         return false;
@@ -101864,7 +98510,12 @@ function _makeCompatibilityCheck(ownVersion) {
             major: +globalVersionMatch[1],
             minor: +globalVersionMatch[2],
             patch: +globalVersionMatch[3],
+            prerelease: globalVersionMatch[4],
         };
+        // if globalVersion has a prerelease tag, versions must match exactly
+        if (globalVersionParsed.prerelease != null) {
+            return _reject(globalVersion);
+        }
         // major versions must match
         if (ownVersionParsed.major !== globalVersionParsed.major) {
             return _reject(globalVersion);
diff --git a/package-lock.json b/package-lock.json
index e22d9858..10438b54 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,11 +5,14 @@
   "requires": true,
   "packages": {
     "": {
+      "name": "setup-java",
       "version": "2.0.0",
       "license": "MIT",
       "dependencies": {
+        "@actions/cache": "^1.0.7",
         "@actions/core": "^1.2.6",
         "@actions/exec": "^1.0.4",
+        "@actions/glob": "^0.2.0",
         "@actions/http-client": "^1.0.9",
         "@actions/io": "^1.0.2",
         "@actions/tool-cache": "^1.6.1",
@@ -28,6 +31,39 @@
         "typescript": "^4.2.3"
       }
     },
+    "node_modules/@actions/cache": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/@actions/cache/-/cache-1.0.7.tgz",
+      "integrity": "sha512-MY69kxuubqUFq84pFlu8m6Poxl5sR/xyhpC4JEvno7Yg9ASYdGizEmKgt0m8ovewpYKf15UAOcSC0hzS+DuosA==",
+      "dependencies": {
+        "@actions/core": "^1.2.6",
+        "@actions/exec": "^1.0.1",
+        "@actions/glob": "^0.1.0",
+        "@actions/http-client": "^1.0.9",
+        "@actions/io": "^1.0.1",
+        "@azure/ms-rest-js": "^2.0.7",
+        "@azure/storage-blob": "^12.1.2",
+        "semver": "^6.1.0",
+        "uuid": "^3.3.3"
+      }
+    },
+    "node_modules/@actions/cache/node_modules/@actions/glob": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.1.2.tgz",
+      "integrity": "sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A==",
+      "dependencies": {
+        "@actions/core": "^1.2.6",
+        "minimatch": "^3.0.4"
+      }
+    },
+    "node_modules/@actions/cache/node_modules/semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/@actions/core": {
       "version": "1.2.6",
       "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.6.tgz",
@@ -41,6 +77,15 @@
         "@actions/io": "^1.0.1"
       }
     },
+    "node_modules/@actions/glob": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.2.0.tgz",
+      "integrity": "sha512-mqE2a7I66kxcvsdwxs/filQwZsq25IfktMaviGfDB51v6Q3bvxnV7mFsZnvYtLhqGZbPxwBnH8AD3UYaOWb//w==",
+      "dependencies": {
+        "@actions/core": "^1.2.6",
+        "minimatch": "^3.0.4"
+      }
+    },
     "node_modules/@actions/http-client": {
       "version": "1.0.9",
       "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.9.tgz",
@@ -75,6 +120,231 @@
         "semver": "bin/semver.js"
       }
     },
+    "node_modules/@azure/abort-controller": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.0.4.tgz",
+      "integrity": "sha512-lNUmDRVGpanCsiUN3NWxFTdwmdFI53xwhkTFfHDGTYk46ca7Ind3nanJc+U6Zj9Tv+9nTCWRBscWEW1DyKOpTw==",
+      "dependencies": {
+        "tslib": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/@azure/abort-controller/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+    },
+    "node_modules/@azure/core-asynciterator-polyfill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@azure/core-asynciterator-polyfill/-/core-asynciterator-polyfill-1.0.0.tgz",
+      "integrity": "sha512-kmv8CGrPfN9SwMwrkiBK9VTQYxdFQEGe0BmQk+M8io56P9KNzpAxcWE/1fxJj7uouwN4kXF0BHW8DNlgx+wtCg=="
+    },
+    "node_modules/@azure/core-auth": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.3.2.tgz",
+      "integrity": "sha512-7CU6DmCHIZp5ZPiZ9r3J17lTKMmYsm/zGvNkjArQwPkrLlZ1TZ+EUYfGgh2X31OLMVAQCTJZW4cXHJi02EbJnA==",
+      "dependencies": {
+        "@azure/abort-controller": "^1.0.0",
+        "tslib": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/@azure/core-auth/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+    },
+    "node_modules/@azure/core-http": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-2.1.0.tgz",
+      "integrity": "sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA==",
+      "dependencies": {
+        "@azure/abort-controller": "^1.0.0",
+        "@azure/core-asynciterator-polyfill": "^1.0.0",
+        "@azure/core-auth": "^1.3.0",
+        "@azure/core-tracing": "1.0.0-preview.13",
+        "@azure/logger": "^1.0.0",
+        "@types/node-fetch": "^2.5.0",
+        "@types/tunnel": "^0.0.1",
+        "form-data": "^3.0.0",
+        "node-fetch": "^2.6.0",
+        "process": "^0.11.10",
+        "tough-cookie": "^4.0.0",
+        "tslib": "^2.2.0",
+        "tunnel": "^0.0.6",
+        "uuid": "^8.3.0",
+        "xml2js": "^0.4.19"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/@azure/core-http/node_modules/form-data": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+      "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/@azure/core-http/node_modules/tough-cookie": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
+      "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
+      "dependencies": {
+        "psl": "^1.1.33",
+        "punycode": "^2.1.1",
+        "universalify": "^0.1.2"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/@azure/core-http/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+    },
+    "node_modules/@azure/core-http/node_modules/uuid": {
+      "version": "8.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+      "bin": {
+        "uuid": "dist/bin/uuid"
+      }
+    },
+    "node_modules/@azure/core-lro": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.0.tgz",
+      "integrity": "sha512-TJo95eNT1dwYOPCb0m1C2zyxVlHuRRkKGeg9TKu8XMF2qh4v6c1weD63r9RVIrLdHdnSqS0n6PTXBpWoB8NqMw==",
+      "dependencies": {
+        "@azure/abort-controller": "^1.0.0",
+        "@azure/core-tracing": "1.0.0-preview.13",
+        "@azure/logger": "^1.0.0",
+        "tslib": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/@azure/core-lro/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+    },
+    "node_modules/@azure/core-paging": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.1.3.tgz",
+      "integrity": "sha512-his7Ah40ThEYORSpIAwuh6B8wkGwO/zG7gqVtmSE4WAJ46e36zUDXTKReUCLBDc6HmjjApQQxxcRFy5FruG79A==",
+      "dependencies": {
+        "@azure/core-asynciterator-polyfill": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/@azure/core-tracing": {
+      "version": "1.0.0-preview.13",
+      "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz",
+      "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==",
+      "dependencies": {
+        "@opentelemetry/api": "^1.0.1",
+        "tslib": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/@azure/core-tracing/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+    },
+    "node_modules/@azure/logger": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.2.tgz",
+      "integrity": "sha512-YZNjNV0vL3nN2nedmcjQBcpCTo3oqceXmgiQtEm6fLpucjRZyQKAQruhCmCpRlB1iykqKJJ/Y8CDmT5rIE6IJw==",
+      "dependencies": {
+        "tslib": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/@azure/logger/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+    },
+    "node_modules/@azure/ms-rest-js": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.6.0.tgz",
+      "integrity": "sha512-4C5FCtvEzWudblB+h92/TYYPiq7tuElX8icVYToxOdggnYqeec4Se14mjse5miInKtZahiFHdl8lZA/jziEc5g==",
+      "dependencies": {
+        "@azure/core-auth": "^1.1.4",
+        "abort-controller": "^3.0.0",
+        "form-data": "^2.5.0",
+        "node-fetch": "^2.6.0",
+        "tough-cookie": "^3.0.1",
+        "tslib": "^1.10.0",
+        "tunnel": "0.0.6",
+        "uuid": "^8.3.2",
+        "xml2js": "^0.4.19"
+      }
+    },
+    "node_modules/@azure/ms-rest-js/node_modules/form-data": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+      "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 0.12"
+      }
+    },
+    "node_modules/@azure/ms-rest-js/node_modules/uuid": {
+      "version": "8.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+      "bin": {
+        "uuid": "dist/bin/uuid"
+      }
+    },
+    "node_modules/@azure/storage-blob": {
+      "version": "12.7.0",
+      "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.7.0.tgz",
+      "integrity": "sha512-7YEWEx03Us/YBxthzBv788R7jokwpCD5KcIsvtE5xRaijNX9o80KXpabhEwLR9DD9nmt/AlU/c1R+aXydgCduQ==",
+      "dependencies": {
+        "@azure/abort-controller": "^1.0.0",
+        "@azure/core-http": "^2.0.0",
+        "@azure/core-lro": "^2.0.0",
+        "@azure/core-paging": "^1.1.1",
+        "@azure/core-tracing": "1.0.0-preview.13",
+        "@azure/logger": "^1.0.0",
+        "events": "^3.0.0",
+        "tslib": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/@azure/storage-blob/node_modules/tslib": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+    },
     "node_modules/@babel/code-frame": {
       "version": "7.12.13",
       "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz",
@@ -892,6 +1162,14 @@
         "node": ">=8.0"
       }
     },
+    "node_modules/@opentelemetry/api": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.2.tgz",
+      "integrity": "sha512-DCF9oC89ao8/EJUqrp/beBlDR8Bp2R43jqtzayqCoomIvkwTuPfLcHdVhIGRR69GFlkykFjcDW+V92t0AS7Tww==",
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
     "node_modules/@sinonjs/commons": {
       "version": "1.8.2",
       "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz",
@@ -997,8 +1275,29 @@
     "node_modules/@types/node": {
       "version": "12.20.4",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.4.tgz",
-      "integrity": "sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ==",
-      "dev": true
+      "integrity": "sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ=="
+    },
+    "node_modules/@types/node-fetch": {
+      "version": "2.5.12",
+      "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz",
+      "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==",
+      "dependencies": {
+        "@types/node": "*",
+        "form-data": "^3.0.0"
+      }
+    },
+    "node_modules/@types/node-fetch/node_modules/form-data": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+      "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
     },
     "node_modules/@types/normalize-package-data": {
       "version": "2.4.0",
@@ -1024,6 +1323,14 @@
       "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==",
       "dev": true
     },
+    "node_modules/@types/tunnel": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.1.tgz",
+      "integrity": "sha512-AOqu6bQu5MSWwYvehMXLukFHnupHrpZ8nvgae5Ggie9UwzDR1CCwoXgSSWNZJuyOlCdfdsWMA5F2LlmvyoTv8A==",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
     "node_modules/@types/yargs": {
       "version": "15.0.13",
       "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz",
@@ -1055,6 +1362,17 @@
       "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==",
       "dev": true
     },
+    "node_modules/abort-controller": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+      "dependencies": {
+        "event-target-shim": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=6.5"
+      }
+    },
     "node_modules/acorn": {
       "version": "7.4.1",
       "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
@@ -1240,8 +1558,7 @@
     "node_modules/asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-      "dev": true
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
     },
     "node_modules/atob": {
       "version": "2.1.2",
@@ -1365,8 +1682,7 @@
     "node_modules/balanced-match": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-      "dev": true
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
     },
     "node_modules/base": {
       "version": "0.11.2",
@@ -1449,7 +1765,6 @@
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -1717,7 +2032,6 @@
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
       "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "dev": true,
       "dependencies": {
         "delayed-stream": "~1.0.0"
       },
@@ -1734,8 +2048,7 @@
     "node_modules/concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
     },
     "node_modules/convert-source-map": {
       "version": "1.7.0",
@@ -1953,7 +2266,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-      "dev": true,
       "engines": {
         "node": ">=0.4.0"
       }
@@ -2119,6 +2431,22 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/event-target-shim": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/events": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+      "engines": {
+        "node": ">=0.8.x"
+      }
+    },
     "node_modules/exec-sh": {
       "version": "0.3.4",
       "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz",
@@ -2780,7 +3108,6 @@
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
       "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
-      "dev": true,
       "engines": {
         "node": ">=4"
       }
@@ -4097,7 +4424,6 @@
       "version": "1.46.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
       "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
-      "dev": true,
       "engines": {
         "node": ">= 0.6"
       }
@@ -4106,7 +4432,6 @@
       "version": "2.1.29",
       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
       "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
-      "dev": true,
       "dependencies": {
         "mime-db": "1.46.0"
       },
@@ -4127,7 +4452,6 @@
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true,
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -4218,6 +4542,14 @@
       "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
       "dev": true
     },
+    "node_modules/node-fetch": {
+      "version": "2.6.1",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
+      "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      }
+    },
     "node_modules/node-int64": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -4650,6 +4982,14 @@
         "node": ">= 10"
       }
     },
+    "node_modules/process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
     "node_modules/prompts": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz",
@@ -4666,8 +5006,7 @@
     "node_modules/psl": {
       "version": "1.8.0",
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
-      "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
-      "dev": true
+      "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
     },
     "node_modules/pump": {
       "version": "3.0.0",
@@ -4683,7 +5022,6 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
       "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
-      "dev": true,
       "engines": {
         "node": ">=6"
       }
@@ -5149,6 +5487,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+    },
     "node_modules/saxes": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
@@ -5782,7 +6125,6 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
       "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
-      "dev": true,
       "dependencies": {
         "ip-regex": "^2.1.0",
         "psl": "^1.1.28",
@@ -5841,6 +6183,11 @@
         "node": ">=10"
       }
     },
+    "node_modules/tslib": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+    },
     "node_modules/tunnel": {
       "version": "0.0.6",
       "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
@@ -5934,6 +6281,14 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/universalify": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+      "engines": {
+        "node": ">= 4.0.0"
+      }
+    },
     "node_modules/unset-value": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
@@ -6217,6 +6572,26 @@
       "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
       "dev": true
     },
+    "node_modules/xml2js": {
+      "version": "0.4.23",
+      "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz",
+      "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+      "dependencies": {
+        "sax": ">=0.6.0",
+        "xmlbuilder": "~11.0.0"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/xmlbuilder": {
+      "version": "11.0.1",
+      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
     "node_modules/xmlbuilder2": {
       "version": "2.4.0",
       "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-2.4.0.tgz",
@@ -6387,9 +6762,9 @@
       },
       "dependencies": {
         "tslib": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
-          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+          "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
         }
       }
     },
@@ -6408,21 +6783,21 @@
       },
       "dependencies": {
         "tslib": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
-          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+          "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
         }
       }
     },
     "@azure/core-http": {
-      "version": "1.2.6",
-      "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-1.2.6.tgz",
-      "integrity": "sha512-odtH7UMKtekc5YQ86xg9GlVHNXR6pq2JgJ5FBo7/jbOjNGdBqcrIVrZx2bevXVJz/uUTSx6vUf62gzTXTfqYSQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-2.1.0.tgz",
+      "integrity": "sha512-Pzj87F4b1RH4PFDUpxkZqCdDZ35c5AjDCt3lsTn3i7yCtrXasEm6PVJYhjwsvYYmtgM7aDZIXexcu/qLLf7kyA==",
       "requires": {
         "@azure/abort-controller": "^1.0.0",
         "@azure/core-asynciterator-polyfill": "^1.0.0",
         "@azure/core-auth": "^1.3.0",
-        "@azure/core-tracing": "1.0.0-preview.11",
+        "@azure/core-tracing": "1.0.0-preview.13",
         "@azure/logger": "^1.0.0",
         "@types/node-fetch": "^2.5.0",
         "@types/tunnel": "^0.0.1",
@@ -6457,9 +6832,9 @@
           }
         },
         "tslib": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
-          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+          "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
         },
         "uuid": {
           "version": "8.3.2",
@@ -6469,21 +6844,20 @@
       }
     },
     "@azure/core-lro": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-1.0.5.tgz",
-      "integrity": "sha512-0EFCFZxARrIoLWMIRt4vuqconRVIO2Iin7nFBfJiYCCbKp5eEmxutNk8uqudPmG0XFl5YqlVh68/al/vbE5OOg==",
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.2.0.tgz",
+      "integrity": "sha512-TJo95eNT1dwYOPCb0m1C2zyxVlHuRRkKGeg9TKu8XMF2qh4v6c1weD63r9RVIrLdHdnSqS0n6PTXBpWoB8NqMw==",
       "requires": {
         "@azure/abort-controller": "^1.0.0",
-        "@azure/core-http": "^1.2.0",
-        "@azure/core-tracing": "1.0.0-preview.11",
-        "events": "^3.0.0",
-        "tslib": "^2.0.0"
+        "@azure/core-tracing": "1.0.0-preview.13",
+        "@azure/logger": "^1.0.0",
+        "tslib": "^2.2.0"
       },
       "dependencies": {
         "tslib": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
-          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+          "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
         }
       }
     },
@@ -6496,19 +6870,18 @@
       }
     },
     "@azure/core-tracing": {
-      "version": "1.0.0-preview.11",
-      "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.11.tgz",
-      "integrity": "sha512-frF0pJc9HTmKncVokhBxCqipjbql02DThQ1ZJ9wLi7SDMLdPAFyDI5xZNzX5guLz+/DtPkY+SGK2li9FIXqshQ==",
+      "version": "1.0.0-preview.13",
+      "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz",
+      "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==",
       "requires": {
-        "@opencensus/web-types": "0.0.7",
-        "@opentelemetry/api": "1.0.0-rc.0",
-        "tslib": "^2.0.0"
+        "@opentelemetry/api": "^1.0.1",
+        "tslib": "^2.2.0"
       },
       "dependencies": {
         "tslib": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
-          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+          "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
         }
       }
     },
@@ -6521,16 +6894,16 @@
       },
       "dependencies": {
         "tslib": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
-          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+          "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
         }
       }
     },
     "@azure/ms-rest-js": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.5.2.tgz",
-      "integrity": "sha512-9nCuuoYwHZEZw1t0MVtENH+c1k2R4maYAlBBDSZhZu6bEucyfYUUigNXXKjt2cFBt4sO+sTzi0uI0f/fiPFr+Q==",
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@azure/ms-rest-js/-/ms-rest-js-2.6.0.tgz",
+      "integrity": "sha512-4C5FCtvEzWudblB+h92/TYYPiq7tuElX8icVYToxOdggnYqeec4Se14mjse5miInKtZahiFHdl8lZA/jziEc5g==",
       "requires": {
         "@azure/core-auth": "^1.1.4",
         "abort-controller": "^3.0.0",
@@ -6539,7 +6912,7 @@
         "tough-cookie": "^3.0.1",
         "tslib": "^1.10.0",
         "tunnel": "0.0.6",
-        "uuid": "^3.3.2",
+        "uuid": "^8.3.2",
         "xml2js": "^0.4.19"
       },
       "dependencies": {
@@ -6552,28 +6925,33 @@
             "combined-stream": "^1.0.6",
             "mime-types": "^2.1.12"
           }
+        },
+        "uuid": {
+          "version": "8.3.2",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+          "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
         }
       }
     },
     "@azure/storage-blob": {
-      "version": "12.6.0",
-      "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.6.0.tgz",
-      "integrity": "sha512-cAzsae+5ZdhugQfIT7o5SlVyF2Sc+HygZdPO41ZYdXklfGUyEt+5K4PyM5HQDc0MTVt6x7+waXcaAXT2eF9E6A==",
+      "version": "12.7.0",
+      "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.7.0.tgz",
+      "integrity": "sha512-7YEWEx03Us/YBxthzBv788R7jokwpCD5KcIsvtE5xRaijNX9o80KXpabhEwLR9DD9nmt/AlU/c1R+aXydgCduQ==",
       "requires": {
         "@azure/abort-controller": "^1.0.0",
-        "@azure/core-http": "^1.2.0",
-        "@azure/core-lro": "^1.0.2",
+        "@azure/core-http": "^2.0.0",
+        "@azure/core-lro": "^2.0.0",
         "@azure/core-paging": "^1.1.1",
-        "@azure/core-tracing": "1.0.0-preview.11",
+        "@azure/core-tracing": "1.0.0-preview.13",
         "@azure/logger": "^1.0.0",
         "events": "^3.0.0",
         "tslib": "^2.0.0"
       },
       "dependencies": {
         "tslib": {
-          "version": "2.3.0",
-          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
-          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+          "version": "2.3.1",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+          "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
         }
       }
     },
@@ -7267,15 +7645,10 @@
       "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz",
       "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ=="
     },
-    "@opencensus/web-types": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/@opencensus/web-types/-/web-types-0.0.7.tgz",
-      "integrity": "sha512-xB+w7ZDAu3YBzqH44rCmG9/RlrOmFuDPt/bpf17eJr8eZSrLt7nc7LnWdxM9Mmoj/YKMHpxRg28txu3TcpiL+g=="
-    },
     "@opentelemetry/api": {
-      "version": "1.0.0-rc.0",
-      "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.0-rc.0.tgz",
-      "integrity": "sha512-iXKByCMfrlO5S6Oh97BuM56tM2cIBB0XsL/vWF/AtJrJEKx4MC/Xdu0xDsGXMGcNWpqF7ujMsjjnp0+UHBwnDQ=="
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.0.2.tgz",
+      "integrity": "sha512-DCF9oC89ao8/EJUqrp/beBlDR8Bp2R43jqtzayqCoomIvkwTuPfLcHdVhIGRR69GFlkykFjcDW+V92t0AS7Tww=="
     },
     "@sinonjs/commons": {
       "version": "1.8.2",
@@ -7385,9 +7758,9 @@
       "integrity": "sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ=="
     },
     "@types/node-fetch": {
-      "version": "2.5.11",
-      "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.11.tgz",
-      "integrity": "sha512-2upCKaqVZETDRb8A2VTaRymqFBEgH8u6yr96b/u3+1uQEPDRo3mJLEiPk7vdXBHRtjwkjqzFYMJXrt0Z9QsYjQ==",
+      "version": "2.5.12",
+      "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz",
+      "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==",
       "requires": {
         "@types/node": "*",
         "form-data": "^3.0.0"