From 08ef2e430ba5f24ca8a2b3deeb2d0f030780566d Mon Sep 17 00:00:00 2001 From: Andrey Popp <8mayday@gmail.com> Date: Fri, 20 Jan 2017 23:12:40 +0300 Subject: [PATCH] fix: fixes for Node 4, style fixes --- src/api/lock.ts | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/api/lock.ts b/src/api/lock.ts index cf50d1973f..b8a9196194 100644 --- a/src/api/lock.ts +++ b/src/api/lock.ts @@ -6,23 +6,21 @@ async function delay(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)) } -async function lock(lockFilename: string, notFirstTime: boolean = false): Promise<{}> { +async function lock(lockFilename: string, firstTime: boolean): Promise<{}> { const promise = new Promise((resolve, reject) => { lockfile.lock( lockFilename, {realpath: false}, async (err: Error & {code: string}) => { - if (err) { - if (err.code === 'ELOCKED') { - if (!notFirstTime) { - logger.warn('waiting for another installation to complete...') - } - await delay(200) - await lock(lockFilename, true) - resolve() - } else { - reject(err) + if (err && err.code === 'ELOCKED') { + if (firstTime) { + logger.warn('waiting for another installation to complete...') } + await delay(200) + await lock(lockFilename, false) + resolve() + } else if (err) { + reject(err) } else { resolve() } @@ -42,7 +40,7 @@ async function unlock(lockFilename: string): Promise<{}> { export default async function withLock (storePath: string, fn: () => Promise): Promise { const lockFilename: string = path.resolve(storePath, 'lock') - await lock(lockFilename) + await lock(lockFilename, true) try { const result = await fn() await unlock(lockFilename)