Description
i didn't see a way to reopen #416, so i'm submitting a new issue. everything about the bug description is the same, so please read about it there. here is a gist demonstrating the problem.
as before, the problem only happens if the execution context that originally owned the lock runs over the time limit that the programmer set, so this could be considered a bug in calling code. it's really easy to add implicit sources of delays, though (any code that depends on TCP connections could time out), so i think it would be useful to give calling code a method to get around this.
the recommendation from #416 to prefix a string onto the token that distinguishes between calling contexts within a single process would still work, but i'm sure there are other ways of dealing with it. the prefix idea does require authors of calling code to be aware of the cases when the prefix must be used. i think it's better not to make any assumptions about the calling environment (for instance, assuming the current thread ID should be prepended).
if needed, i can do the work once an implementation direction is set.