code: public void sendRequestPacket(String nodeID, Context ctx) {
  		FastBuildTree msg = new FastBuildTree(11);
  
  		// Add basic properties (version, sender's nodeID, etc.)
  		msg.putUnsafe("ver", PROTOCOL_VERSION);
  		msg.putUnsafe("sender", this.nodeID);
  		msg.putUnsafe("id", ctx.id);
  		msg.putUnsafe("action", ctx.name);
  
  		// Add params and meta
  		if (ctx.params != null) {
  			msg.putUnsafe("params", ctx.params.asObject());
  			Tree meta = ctx.params.getMeta(false);
  			if (meta != null && !meta.isEmpty()) {
  				msg.putUnsafe("meta", meta.asObject());
  			}
  		}
  
  		// Timeout
  		if (ctx.opts != null && ctx.opts.timeout > 0) {
  			msg.putUnsafe("timeout", ctx.opts.timeout);
  		}
  
  		// Call level
  		msg.putUnsafe("level", ctx.level);
  
  		// Parent ID
  		if (ctx.parentID != null) {
  			msg.putUnsafe("parentID", ctx.parentID);
  		}
  
  		// Request ID
  		msg.putUnsafe("requestID", ctx.requestID);
  
  		// Stream packet counter (default is "0" = packet isn't streamed)
  		if (ctx.stream != null) {
  
  			// Streaming in progress
  			msg.putUnsafe("stream", true);
  
  			// First sequence
  			msg.putUnsafe("seq", 0);
  		}
  
  		// Send message
  		publish(Transporter.PACKET_REQUEST, nodeID, msg);
  	}
docs: --- REQUEST PACKET ---