Thanks to @hungrymonkey I've come up with something like this:
multiplayer.connect("network_peer_packet", self, "_on_packet_received")
multiplayer.send_bytes(PoolByteArray([0, 1, 2, 3]))
func _on_packet_received(id, packet):
I've also tried to send packets on an even lower level:
network_peer_packet callback when trying to receive packets on client I got errors like:
ERROR: _process_get_node: Condition ' !F ' is true. returned: __null
ERROR: _process_packet: Condition ' node == __null ' is true.
Which is most likely expected because I'm trying to mix different APIs or whatever... Anyway since there's
send_bytes introduced I don't think I need to go that low.