title: Data request is sometimes asynchronous
body: <p>This is a follow-up to a question I posted earlier today. I'm going through <a href="https://www.packtpub.com/web-development/data-oriented-development-angularjs" rel="nofollow noreferrer">this book on using AngularJS with Firebase</a>, which lead me to post <a href="https://stackoverflow.com/questions/30943734/angularfire-firebasearray-can-add-but-not-read">this question</a>. I found a solution, but what I still don't understand is that the example in the <a href="https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebasearray" rel="nofollow noreferrer">API Documentation for a <code>$firebaseArray</code></a> doesn't seem to be handling it as an asynchronous request.</p>
  
  <pre><code>var list = $firebaseArray(new Firebase(URL));
  
  // add an item
  list.$add({ foo: "bar" }).then(...);
  
  // remove an item
  list.$remove(2).then(...);
  
  // make the list available in the DOM
  $scope.list = list;
  </code></pre>
  
  <p>Also, the example from the books seems to treat the request synchronously as well.</p>
  
  <pre><code># Service
  var buildingsUri = FIREBASE_URI + '/buildings';
  var ref = new Firebase(buildingsUri);
  var buildings = $firebaseArray(ref);
  
  var getBuildings = function () {
    return buildings;
  };
  
  ...
  # Controller
  $scope.buildings = syncArraySvc.getBuildings();
  </code></pre>
  
  <p>How is it that <code>$scope.list</code> in the first example and <code>$scope.buildings</code> in the second example could be properly populated with data when they haven't checked to make sure the request has completed?</p>