re: A lock statement with timeout…
I’ve done this trick before to deal with common patterns in numerous methods. Usually lock acquisition, but there are some others. Problem is it always feels like a hack since the object isn’t really disposable so much as "call-back-at-the-end-of-a-scope-able".
When we decided the using statement, we decided to name it “using” rather than something more specific to disposing objects so that it could be used for exactly this scenario.