AsyncLock implementation

Signed-off-by: Duncan Abbott <duncan@foodforbenjamin.com>