It might return before shouldUnlock gets set to true, and shouldUnlock's value is used from the finally block