title: Backbone.js - Fetch() not being called from my router
body: <p>I'll try and simplify this as much as possible..</p>
  
  <p>My routes.js :</p>
  
  <pre><code>direct_message: function(member_id) {
  
    list.conversations(function(conversations) { 
      conversation_view.model = conversations.models[conversations.models.length - 1];
      conversation_view.render();
    });
  </code></pre>
  
  <p>Ok so <code>conversations()</code> is a function inside my list model that is has a convenient little fetch() method and a callback to it ( which is the method I'm passing into it ). It checks to see if things have been <strong>fetched</strong>, and if so, returns the callback with the fetched parameters.. As so :</p>
  
  <pre><code>conversations: function(callback) {
    var _callback = _.bind(function() { if(callback) callback(this._conversations); }, this);
    if(!this._conversations) {
      this._conversations = new app.collections.Conversations();
      this._conversations.url = this._url();
      app.events.on('pusher:conversation_started', this._conversation_started, this);
    }
    if(this._conversations._fetched) {
      _callback();
    } else {
      this._conversations.on('reset', _callback);
      if(!this._conversations._fetching) {
        this._conversations._fetching = true;
        this._conversations.fetch({
          success: function(c) { c._fetched = true; },
          error: function(c) { c._fetching = false; }
        });
      }
    }
    return this._conversations;
  },
  </code></pre>
  
  <p>Phew! I hope I didn't lose you yet. So this cascaded all fine and proper for awhile. But now, for some reason, when I perform that method within my <code>routes.js</code>, it returns back as <code>undefined</code>.</p>
  
  <p>The reason I think this is happening is because that fetch request is asynchronous. So the return is coming back correctly, but the <code>return</code> statement is called before the data comes back. So all the other calls to <code>conversation()</code> actually return correctly except for the first one which initialized it.</p>
  
  <p>Then I was thinking, let me just add <code>async: false</code> to the fetch() call, but when I do this, for some reason the later calls come back <code>undefined</code>. Is there <em>anything</em> else I can do? Maybe something else I should be looking at? Possibly some way to incorporate $.deferred objects in this?</p>
  
  <p>Thanks so much!</p>