A promise is a lock in that resolving it is the 'release' and awaiting it is `acquire`.
For example:
```
let release;
const acquire = new Promise(resolve => release = resolve);
(async () => {
await acquire;
// use here
release(); // now others can use it
})();
```
This is a bit different because multiple people can await the lock here so it's like a "one time multicast mutex" making it more akin to condition variables.
That said - thinking about it as a mutex is a really backwards way in my opinion.
For example:
``` let release; const acquire = new Promise(resolve => release = resolve);
(async () => {
})(); ```This is a bit different because multiple people can await the lock here so it's like a "one time multicast mutex" making it more akin to condition variables.
That said - thinking about it as a mutex is a really backwards way in my opinion.