I am experiencing the same issue. The callback is called when down, but not when going back up.
For me it appears to happen when the DNS is changed.
I can manually poll the connection status using the same method that “cm data info” uses and can confirm that the data connection has gone back up.
When I try to use the data connection I get “no route to host” errors.
Looking at the routing table I can see the same issue outlined in this post.