onUnhandledError = function (error) {
        // forward to a future turn so that ``when``
        // does not catch it and turn it into a rejection.
        Q.nextTick(function () {
            makeStackTraceLong(error, promise);
            if (Q.onerror) {
                Q.onerror(error);
            } else {
                throw error;
            }
        });
    }
Wraps a NodeJS continuation passing function and returns an equivalent
version that returns a promise.
@example
Q.nfbind(FS.readFile, __filename)("utf-8")
.then(console.log)
.done()