const lockfile = require('proper-lockfile'); async function lockFile(filePath) { try { await lockfile.lock(filePath, { realpath: false, retries: { retries: 10, // Number of retries factor: 2, // The exponential factor minTimeout: 1000, // The number of milliseconds before starting the first retry maxTimeout: 5000, // The maximum number of milliseconds between two retries randomize: true, // Randomizes the timeouts by multiplying with a factor between 1 to 2 } }); console.log(`File locked: ${filePath}`); } catch (error) { console.error(`Error locking file ${filePath}: ${error.message}`); throw error; // Propagate the error if unable to lock after retries } } async function unlockFile(filePath) { try { await lockfile.unlock(filePath); console.log(`File unlocked: ${filePath}`); } catch (error) { console.error(`Error unlocking file ${filePath}: ${error.message}`); // Decide whether to throw the error or not, based on your error handling strategy throw error; } } module.exports = {lockFile, unlockFile}