UNPKG

hash-wasm

Version:

Lightning fast hash functions for browsers and Node.js using hand-tuned WebAssembly binaries (MD4, MD5, SHA-1, SHA-2, SHA-3, Keccak, BLAKE2, BLAKE3, PBKDF2, Argon2, bcrypt, scrypt, Adler-32, CRC32, CRC32C, RIPEMD-160, HMAC, xxHash, SM3, Whirlpool)

25 lines (19 loc) 459 B
class Mutex { private mutex = Promise.resolve(); lock(): PromiseLike<() => void> { let begin: (unlock: () => void) => void = () => {}; this.mutex = this.mutex.then(() => new Promise(begin)); return new Promise((res) => { begin = res; }); } async dispatch<T>(fn: () => PromiseLike<T>): Promise<T> { const unlock = await this.lock(); try { return await Promise.resolve(fn()); } finally { unlock(); } } } export default Mutex;