There are no threads in Node, but still you have several approaches available here.
1. Run the map/reduce work in a child process, like you said. If it times out, kill the process. You'd lose a lot of performance -- starting each process is expensive, and each concurrent request means another process hogging the CPU. Maybe you can afford the performance hit. Depends on what you're doing.
2. Sprinkle the map/reduce code with checks, like
if (timeout) return. It's probably the least performance overhead, but it'll sacrifice code cleanliness. Anyway you said it's impossible in this case.
3. Library-specific controls. I can imagine a map/reduce library being implemented with pause() and resume() functions. Wouldn't that be cool? The downside is I just made it up, so it doesn't exist, as far as I know. (Would love to be corrected on that.)
I guess that's kind of a limited definition of "several".