LockFunc
Provide your own global lock implementation instead of the default
implementation. The function should acquire a lock for the duration of the
fn
async function, such that no other client instances will be able to
hold it at the same time.
type LockFunc = <R>(
name: string,
acquireTimeout: number,
fn: () => Promise<R>,
) => Promise<R>;