Mongoose save with promises and populate

I have the following code (Mongoose has been promisified with Bluebird)

function createNewCourse(courseInfo, teacherName) {
    var newCourse = new courseModel({
        cn: courseInfo.courseName,
        cid: courseInfo.courseId
    });

    return newCourse.saveAsync()
        .then(function (savedCourse) {
            var newTeacher = new newTeacherModel({
                na: teacherName,
                _co: savedCourse._id // This would be an array
            });

            return newTeacher.saveAsync().then(function() {
                return newCourse;
            });
        });
}

This is a simplification of my problem, but it illustrates it well. I want my createNewCourse function to return a promise that, once resolved, will return the newly saved course, not the teacher. The above code works, but it's not elegant and does not use promises well to avoid callback hell.

Another option I considered is returning the course and then doing a populate, but that would mean re-querying the database.

Any ideas how to simplify this?

Edit: I thought it might be useful to post the save code but using native callbacks (omitting error-handling)

function createNewCourse(courseInfo, teacherName, callback) {
    var newCourse = new courseModel({
        cn: courseInfo.courseName,
        cid: courseInfo.courseId
    });

    newCourse.save(function(err, savedCourse) {
        var newTeacher = new newTeacherModel({
            na: teacherName,
            _co: savedCourse._id // This would be an array
        });

        newTeacher.save(function(err, savedTeacher) {
            callback(null, newCourse);
        });
    });
 }

Use .return():

function createNewCourse(courseInfo, teacherName) {
    var newCourse = new courseModel({
        cn: courseInfo.courseName,
        cid: courseInfo.courseId
    });

    return newCourse.saveAsync().then(function (savedCourse) {
        var newTeacher = new newTeacherModel({
            na: teacherName,
            _co: savedCourse._id // This would be an array
        });

        return newTeacher.saveAsync();
    }).return(newCourse);
}

Remember how chaining works?

.then(function() {
    return somethingAsync().then(function(val) {
        ...
    })
})

Is equivalent to (disregarding any closure variables):

.then(function() {
    return somethingAsync()
})
.then(function(val) {
    ...
})

return(x) is simply equivalent to .then(function(){return x;})