This issue is similar to
Split assignment events are treated specially by the source API. Users do not create them directly but call methods on the contexts to assign splits.
The RequestSplitEvent is in contrast to that a custom user event and needs to be handled like a custom event, when sent by enumerators and received by the readers.
That seems a bit confusing and inconsistent, given that RequestSplitEvent is essential for all use cases with pull-based split assignment, which is pretty much any batch use case and various streaming use cases. The event should be on the same level as the AddSplitEvent.
I suggest that we add a SourceReaderContext.requestSplit() and SplitEnumerator.handleSplitRequest(), to have split requests and responses symmetrical.