"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = once; function once(emitter, name) { var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, signal = _ref.signal; return new Promise(function (resolve, reject) { function cleanup() { signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', cleanup); emitter.removeListener(name, onEvent); emitter.removeListener('error', onError); } function onEvent() { cleanup(); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } resolve(args); } function onError(err) { cleanup(); reject(err); } signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', cleanup); emitter.on(name, onEvent); emitter.on('error', onError); }); }