Hooray, those last two commits were pointless. Lets just use NSUserUnixTask (which also conveniently checks if the script is executable or not).
The reason it wasn't working for milky was that he was using [NSFileHandle fileHandleWithStandardOutput] which is the main processes stdout and not readable by us. A pipe is needed (just like he was using for NSTask...).