Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | type OptimisticLockTransactionBody = (onLockFailure: () => void) => Promise<void>; export const optimisticLockTransaction = async ( retryTime, transactionBody: OptimisticLockTransactionBody, ) => { const lockFailure = () => { throw new Error("Optimistic Lock Failure"); }; let lastError = null; let tryTime = 0; while (tryTime++ < retryTime) { try { return await transactionBody(lockFailure); } catch (e) { e.lastError = lastError; lastError = e; } } throw lastError || new Error("Optimistic Lock Failure"); }; |