title: Express 4 - chaining res.json with promise.then does not work
body: <p>I'm working on an express 4 app that uses <code>mysql</code> and <code>sequelize</code> packages. Sequelize ORM uses promises to fetch data from database. I'm trying to fetch data in router and send json response. When I try to chain <code>then</code> callback of promise with <code>res.json</code> I get an error in console saying <code>Unhandled rejection TypeError: Cannot read property 'get' of undefined</code></p>
  
  <pre><code>// This works
  employeeRouter.get("/:id", function(req, res){
     Employee.findById(req.params.id).then(function(data){
        res.json(data);
     });
  });
  
  // Replacing above code with following doesn't work
  employeeRouter.get("/:id", function(req, res){
     Employee.findById(req.params.id).then(res.json);
  });
  </code></pre>
  
  <p><strong>Error Stack:</strong></p>
  
  <pre><code>Unhandled rejection TypeError: Cannot read property 'get' of undefined
      at json (D:\Workstation\DataPro\CountryStats\node_modules\express\lib\response.js:241:21)
      at tryCatcher (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\util.js:16:23)
      at Promise._settlePromiseFromHandler (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\promise.js:504:31)
      at Promise._settlePromise (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\promise.js:561:18)
      at Promise._settlePromise0 (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\promise.js:606:10)
      at Promise._settlePromises (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\promise.js:685:18)
      at Async._drainQueue (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\async.js:138:16)
      at Async._drainQueues (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\async.js:148:10)
      at Immediate.Async.drainQueues [as _onImmediate] (D:\Workstation\DataPro\CountryStats\node_modules\bluebird\js\release\async.js:17:14)
      at processImmediate [as _immediateCallback] (timers.js:383:17)
  </code></pre>
  
  <p><strong>models/employee.js</strong></p>
  
  <pre><code>var Sequelize = require('sequelize'),
      sequelize = require('../db-connect/sequelize');
  
  (function(){
  
    // Use Strict Linting
    'use strict';
  
    // Define Sequalize
    var Employee = sequelize.define('employee', {
      empNo: { field: 'emp_no', type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
      birthDate: { field: 'birth_date', type: Sequelize.DATE },
      firstName: { field: 'first_name', type: Sequelize.STRING },
      lastName: { field: 'last_name', type: Sequelize.STRING },
      gender: { field: 'gender', type: Sequelize.ENUM('M', 'F') },
      hireDate: { field: 'hire_date', type: Sequelize.DATE },
    });
  
    // Export
    module.exports = Employee;
  
  }());
  </code></pre>
  
  <p><strong>db-connect/sequelize.js</strong></p>
  
  <pre><code>var Sequelize = require('sequelize');
  
  (function(){
  
    // Use Strict Linting
    'use strict';
  
    // Sequalize Connection
    var sequelize = null;
  
    // Create Sequalize Connection
    if(!sequelize){
      sequelize = new Sequelize('employees', 'root', '', {
        host: 'localhost',
        dialect: 'mysql',
        define: {
          timestamps: false
        }
      });
    }
  
    module.exports = sequelize;
  
  }());
  </code></pre>
  
  <p><strong>routes/employees.js</strong></p>
  
  <pre><code>var express = require('express'),
      Employee = require('../models/employee');
  
  (function(app){
  
    // Use Strict Linting
    'use strict';
  
    // Create Router
    var employeeRouter = express.Router();
  
    // Home Page
    employeeRouter.get("/", function(req, res){
      res.json({employees: ['all']});
    });
  
    // Get Specific Employee
    employeeRouter.get("/:id", function(req, res, next){
      Employee.findById(req.params.id).then(function(data){
        res.json(data);
      });
    });
  
    // ----------------------------------
    // Export
    // ----------------------------------
  
    module.exports = employeeRouter;
  
  }());
  </code></pre>