This is because getGenericPropertyNames() can throw exceptions. The current ASSERT(!scope.exception()) there is invalid. <rdar://problem/31181187>
Hmmm, on further examination, I think that the ASSERT(!scope.exception()) in getGenericPropertyNames() is valid. I need to dig into this more.