you need to call `callback()` every place you return