docs: protected void removeExecutor(final Executor e) {
          final Runnable task = new Runnable() {
              @Override
              public void run() {
                  synchronized (Computer.this) {
                      executors.remove(e);
                      addNewExecutorIfNecessary();
                      if (!isAlive()) {
                          AbstractCIBase ciBase = Jenkins.getInstanceOrNull();
                          if (ciBase != null) { // TODO confirm safe to assume non-null and use getInstance()
                              ciBase.removeComputer(Computer.this);
                          }
                      }
                  }
              }
          };
          if (!Queue.tryWithLock(task)) {
              // JENKINS-28840 if we couldn't get the lock push the operation to a separate thread to avoid deadlocks
              threadPoolForRemoting.submit(Queue.wrapWithLock(task));
          }
      }