22 lines
551 B
JavaScript
22 lines
551 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.codeMutex = void 0;
|
|
/**
|
|
* Executes only one instance of give code at a time. If other calls come in in
|
|
* parallel, they get resolved to the result of the ongoing execution.
|
|
*/
|
|
const codeMutex = () => {
|
|
let result;
|
|
return async (code) => {
|
|
if (result)
|
|
return result;
|
|
try {
|
|
return await (result = code());
|
|
}
|
|
finally {
|
|
result = undefined;
|
|
}
|
|
};
|
|
};
|
|
exports.codeMutex = codeMutex;
|