For example, create a lock object for controlling recursion and add wrap locking/unlocking into decorator around `connect`/`opt_reconnect`