export default function once(emitter, name, { signal } = {}) {
    return new Promise((resolve, reject) => {
        function cleanup() {
            signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', onAbort);
            emitter.removeListener(name, onEvent);
            emitter.removeListener('error', onError);
        }
        function onEvent(...args) {
            cleanup();
            resolve(args);
        }
        function onError(err) {
            cleanup();
            reject(err);
        }
        function onAbort() {
            cleanup();
            const err = new Error('The operation was aborted');
            err.name = 'AbortError';
            reject(err);
        }
        if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
            onAbort();
            return;
        }
        signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', onAbort);
        emitter.on(name, onEvent);
        emitter.on('error', onError);
    });
}//# sourceMappingURL=https://github.com/VSCodium/sourcemaps/releases/download/stable-e2b23bbd5646cc28aaa6f26ee53b257c290b6be1/node_modules-@tootallnate-once-dist-index.js.map