But I would like to understand the reasoning behind this design choice. And I would also suggest adding @throws to the javadoc of ReactiveCollection#get explaining this functionality.
We did this so that all APIs work the same way - you get exceptions in all cases and there is no “oddball”. This also holds true when switching from reactive to blocking API and vice versa - this way it is just more consistent.