public void abortCommunication(SubLWorker worker) throws java.io.IOException {
    Integer id = worker.getId();
    if (id.intValue() < 0) {
      //@note serial communications cannot be canceled right now
      return;
    }
    try {
      String command = "(fif (" + "terminate-active-task-process" + " " + worker.getId() + " \"" + uuid + "\" " + ":abort" +
              ") '(ignore) '(ignore))";
      sendBinary(cycAccess.makeCycList(command));
    } finally {
      // the SubL implementation of ABORT will not send anything back,
      // so we do need to perform event signaling and cleanup
      worker.fireSubLWorkerTerminatedEvent(new SubLWorkerEvent(worker,
              ABORTED_STATUS, null));
      waitingReplyThreads.remove(id);
    }
  }