А зачем http? И в чём именно «неэлегантность»?
Я бы улучшил так:
1) Убрал http;
2) Убрал отдельный метод для возвращения
app;
3) Не выковыривал бы конфиги (в данном случае — порт) из
app внутри модуля, а хранил бы там отдельно
engine.coffee:
express = require 'express'
app = express()
port = process.env.PORT or 5000
exports = module.exports = (callback) ->
app.listen port, callback
app.coffee:
engine = require './engine'
app = engine ->
console.log "listening on " + app.address().port