This is possible on NSTimer, whose API is not really meant to be used across different threads / run loops. In this implementation, doing this is asking for race conditions. I would rather get rid of the `-setFireDate:` method unless I had unit tests that proved that this works properly, and it's not easy to write unit tests to check what we have to check here.
Is this a method that you need in particular?

With `MSWeakTimer`, if you want to change when a timer is going to fire, it's just easy to invalidate it and create a new one, which is far less error prone.