Error handling is now delegated to a callback.