Use thimble

WIP, with some review points so it doesn't get too off-track.
That's a good point.  To be clear, I was referring to `Lock.cancel`. Can we move cancellation to a different ticket/PR?