docs: private void cancelConnectionWaiterLocked(ConnectionWaiter waiter) {
          if (waiter.mAssignedConnection != null || waiter.mException != null) {
              // Waiter is done waiting but has not woken up yet.
              return;
          }
  
          // Waiter must still be waiting.  Dequeue it.
          ConnectionWaiter predecessor = null;
          ConnectionWaiter current = mConnectionWaiterQueue;
          while (current != waiter) {
              assert current != null;
              predecessor = current;
              current = current.mNext;
          }
          if (predecessor != null) {
              predecessor.mNext = waiter.mNext;
          } else {
              mConnectionWaiterQueue = waiter.mNext;
          }
  
          // Send the waiter an exception and unpark it.
          waiter.mException = new OperationCanceledException();
          LockSupport.unpark(waiter.mThread);
  
          // Check whether removing this waiter will enable other waiters to make progress.
          wakeConnectionWaitersLocked();
      }