UNPKG

braintree-web

Version:

A suite of tools for integrating Braintree in the browser

40 lines (29 loc) 788 B
"use strict"; var batchExecuteFunctions = require("./batch-execute-functions"); function Destructor() { this._teardownRegistry = []; this._isTearingDown = false; } Destructor.prototype.registerFunctionForTeardown = function (fn) { if (typeof fn === "function") { this._teardownRegistry.push(fn); } }; Destructor.prototype.teardown = function (callback) { if (this._isTearingDown) { callback(new Error("Destructor is already tearing down")); return; } this._isTearingDown = true; batchExecuteFunctions( this._teardownRegistry, function (err) { this._teardownRegistry = []; this._isTearingDown = false; if (typeof callback === "function") { callback(err); } }.bind(this) ); }; module.exports = Destructor;