One thing I've found works pretty nicely for tests like this is to keep a log of events, and then make assertions about that log. Otherwise you get 2 callbacks but you aren't sure which ones!

(And sadly, the `fail()` calls don't really fail anyway, since this gets called on a different thread.)