Don't call callbacks with locks held

It's like running with scissors. Closes #57