Hello, Flink community!

It happens that I need to access a timer service in a RichAsyncFunction implementation. I know it's normally accomplished via StreamingRuntimeContext instance available in a RichFunction, but unfortunately, RichAsyncFunction extending RichFunction overrides “setRuntimeContext” method [1] wrapping a RuntimeContext instance passed as the method argument into a RichAsyncFunctionRuntimeContext instance [2]. This RichAsyncFunction specific RuntimeContext implementation is private [2] which makes it infeasible to gain access to a wrapped original RuntimeContext thus making it impossible to leverage timer service in RichAsyncFunction implementations. Just curious is there any reason for that? Can we make this implementation public or somehow share a wrapped instance?

Many thanks in advance!

[1] https://github.com/apache/flink/blob/c96a4d7afe379a291cc538ca36af896df8dc2127/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/async/RichAsyncFunction.java#L76
[2] https://github.com/apache/flink/blob/c96a4d7afe379a291cc538ca36af896df8dc2127/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/functions/async/RichAsyncFunction.java#L100



Kind Regards,
Mike Pryakhin