What are the design limitations leading to separate send/receive transports on the client and can we lift them?

My initial idea was to have a single connection for everything with data channel opened first and everything else gradually upgraded from there. But looks like now I’ll establish data channel connection with node-webrtc and then separately 2 more for sending and receiving multiple tracks each.
Looks like reasonable balance of complexity and efficiency. Fascinating how far WebRTC has come and how tricky it still is.

Thanks for writing it down, it really helps to understand why things are the way they are (not that I have doubts it is not done for good, but having insides into decisions and understanding technology better makes me more comfortable).