Makes lock stream/queue agnostic
Adds command queue logic so ready event isn't necessary
Changes error handling to only emit an error if a callback wasn't provided.
Added a comment for every method