I think this is too defensive, I don't think the flags can change like that. It means a method would flip from Java to non-Java (and `isMethod` is an overridable method, not a flag test). In fact, the guarantee that the flags are seen as they were in the moment an `ask` call returned means we have the same behavior as before, when the call was done during the `ask` call.

You are right that I should add a comment explaining that the closure should be run on the UI thread.