Separate unidirectional streams vs single bidirectional stream
Over the years I’ve run into (and created) APIs around device communication (Serial, USB, TCP, Bluetooth, etc). At the bottom of these APIs are usually byte streams that can send data to the device and receive data from the device. Where they sometimes differ however is whether they give you one bidirectional stream, or two separate unidirectional streams.