use cattr_accessor
refactor loop into until
yield owner to failed lock
Merge pull request #133 from zendesk/grosser/rework

rework as suggested by steved