Currently documentation[1] explains in detail how uni-directional streams work, but leaves bi-directional streams largely undocumented.
When reading Frame Streams using non-blocking I/O, fstrm_reader abstraction is of no use (even fstrm_capture utility ignores it), so you have to talk to bi-directional writers on your own, but there's no specification on that, besides reading the fstrm_writer code.
[1] https://farsightsec.github.io/fstrm/group__fstrm__control.html