Lock

adds `.lock()` and `.unlock()`.

cc @calvinfo @gjohnson 
yeah, I think not calling `return` is the way to go. that way the integration can at least proceed, and we can emit the lock error as well.