docs: public void sendRequest(Message request, Object context, Message.Builder responseBuilder,
                            Duration timeout) {
      // Pack it as a no-timeout request and send it!
      final REQID rid = REQID.generate();
      contextMap.put(rid, context);
      responseMessageMap.put(rid, responseBuilder);
  
      // Add timeout for this request if necessary
      if (timeout.getSeconds() > 0) {
        registerTimerEvent(timeout, new Runnable() {
          @Override
          public void run() {
            handleTimeout(rid);
          }
        });
      }
  
      OutgoingPacket opk = new OutgoingPacket(rid, request);
      socketChannelHelper.sendPacket(opk);
    }