code: @Override
      public void close()
      {
          Preconditions.checkState(Thread.currentThread().equals(ourThread), "Not in the correct thread");
          failedSessionThreads.remove(ourThread);
  
          client.removeParentWatcher(watcher);
      }
docs: Must be called in a finally handler when done with the loop