code: void start(Future<DataPort> dataPortFuture) {
          this.startStopLock.lock();
          try {
              this.dataPortFuture = dataPortFuture;
              this.running.set(true);
              this.outgoing.resume();
              this.reconnectOutgoing.resume();
              this.stopped = connection.getExecutor().submit(this, Boolean.TRUE);
          } finally {
              this.startStopLock.unlock();
          }
      }
docs: This method resets that future so mistiming can result in badness.