module.exports = parseArguments function isWritable(stream) { return typeof stream.write === "function" && typeof stream.end === "function" } function parseArguments(req, res, opts, callback) { // (req, cb) if (typeof res === "function") { callback = res opts = {} res = null } // (req, res, cb) if (typeof opts === "function") { callback = opts opts = {} } // (req, opts, cb) if (res && !isWritable(res)) { opts = res res = null } // default (req, res, opts, cb) return { req: req, res: res, opts: opts, callback: callback } }