docs: public void send(PeerMessage message) throws IllegalStateException {
      logger.trace("Sending msg {} to {}", message.getType(), this);
      if (this.isConnected()) {
        ByteBuffer data = message.getData();
        data.rewind();
        connectionManager.offerWrite(new WriteTask(socketChannel, data, new WriteListener() {
          @Override
          public void onWriteFailed(String message, Throwable e) {
            if (e == null) {
              logger.info(message);
            } else if (e instanceof ConnectionClosedException){
              logger.debug(message, e);
              unbind(true);
            } else {
              LoggerUtils.warnAndDebugDetails(logger, message, e);
            }
  
          }
  
          @Override
          public void onWriteDone() {
          }
        }), 1, TimeUnit.SECONDS);
      } else {
        logger.trace("Attempting to send a message to non-connected peer {}!", this);
        unbind(true);
      }
    }