Acquire the lock
A promise that resolves when you have the lock, or rejects when the queue is closed
Throw an error on all functions waiting for the lock, and throw another whenever an acquisition is attempted
The error to be thrown for all waiting for the lock
The error to throw whenever anyone tries to acquire the lock
Release the lock
If the queue is closed