ReactiveX is a great framework for writing asynchronous code, and unit tests. However, it also has an Achilles' heel, which is debugging. A common weakness of all ReactiveX implementations is debugging. This is basically an empty field, with no tool to easily help with tracking issues. This lack of debugging tools is also the reason why using a good logging system to help to track bugs is a good idea.
This will probably change in subsequent years. Several other frameworks based on streams or graphs include nice debugging tools. One example is the GStreamer tracing system, which allows us to track virtually every object moving in a graph. Another one is TensorFlow, where each operation can be named and graphs can be visualized, with great navigation features. But for now, the only option to track ReactiveX issues is to go back to the old basic trick: printing traces...