tickets/DM-199: Develop new master-worker result system

From the comments, it sounds like you want to prevent multiple poisonings. If that's true, then I find the behavior of these functions to be quite confusing. For example, if I've supplied a poison callback, then calling `poison()` multiple times calls the callback multiple times - is that intentional? If I call `poison` followed by multiple `setPoison` calls, a poison callback will be invoked for each `setPoison` call.