private void startMessagePusher() {
    synchronized (pusherSync) {
      while (pusherThread != null) {
        // wait for previous pusher thread to exit
        boolean interrupted = Thread.interrupted();
        try {
          pusherSync.wait(); // spurious wakeup ok
        } catch (InterruptedException ex) {
          interrupted = true;
          owner.getConduit().getCancelCriterion().checkCancelInProgress(ex);
        } finally {
          if (interrupted) {
            Thread.currentThread().interrupt();
          }
        }
      }
      asyncQueuingInProgress = true;
      pusherThread =
          new LoggingThread("P2P async pusher to " + remoteMember, this::runMessagePusher);
    }
    pusherThread.start();
  }
Return true if it was able to handle a block write of the given buffer. Return false if it is
still the caller is still responsible for writing it.

@throws ConnectionException if the conduit has stopped
geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java