/** Schedules a retransmission for confirmable messages. */
  @Override
  public void sendRequest(final Exchange exchange, final Request request) {

    LOGGER.finer("Send request, failed transmissions: " + exchange.getFailedTransmissionCount());

    if (request.getType() == null) request.setType(Type.CON);

    if (request.getType() == Type.CON) {
      prepareRetransmission(
          exchange,
          new RetransmissionTask(exchange, request) {
            public void retransmit() {
              sendRequest(exchange, request);
            }
          });
    }
    super.sendRequest(exchange, request);
  }