So my thinking about this is the following. In general if have a lock whilst doing something which can panic then you REALLY should use ```defer``` so that incase the application recovers the lock will be unlocked.

Using ```defer``` has a small overhead, so in some simple cases where you have a single if block I tend to use manual locking, in this case using defer would mean the lock would would be held until the close is completed, but this isnt exactly required as the closed state is just the boolean flag.