The only way I could think of to solve this was to not try to leverage a callback if the session isn't found, and leverage a shared function callable from the result the JSON request or if the session is available. If someone knows a better way to accomplish this, I would love to see an example.
this.get('#/projects', function(context) {
...
var categories = this.session('categories');
if (categories == undefined) {
this.load('http://mydomain.com/projects/categories/?jsoncallback=?',
{dataType: 'json'})
.then(function(json) {
context.session('categories', json.categories);
// call to shared function
});
}
else {
// call to shared function
}
});