In C8, the expected way to handle this is to put a Time-to-Live (TTL) on the message that is being received. The non-interrupting event subprocess is not needed.
The sender of the message indicates how long the message should be valid for.
Conditional Events is in the roadmap for a future release, but for now you have to use TTL as mentioned by @GotnOGuts . Just make sure you consider the time the message will live in the cache and number of instances you have running to make sure the cache will support the load.
I personally like the Conditional event approach in some scenarios because you can have more than one “check point” controlled by a single message, but we have to wait until a future release.