'isLoaded' always return 'false' when get data from parent model, and 'then' & 'didLoad' didn't work

for example:

var user = this.get('user'); // loaded before enter the controller 
var books = user.get('books'); // books haven't been loaded before
books.then(function(books){
 debugger;
 // it didn't work!   
});
enter code here
setInterval(function(){
  console.log(books.get('isLoaded'));
  // it always 'false'
}, 100)

now, I replace ‘then’ by

books.addObserver('content', function(){})

to solve this problem temporary, but I don’t thought it’s a good idea.