A couple minor comments:
1. I have two issues with Error being used. One is that we should have a
specific type that is thrown, not raw Error type. Second is that I think
in situations where the error is due to an incorrect parameter, it should
be an exception not an error (and not a straight Exception either!).
2. For the documentation of inheritFDs, it says that "On Windows, this
option has no effect." While this is true, it may give the impression
that we don't set the bInheritHandles flag, which we do. I think there
should be a note on that somewhere.
Otherwise, the API and functionality looks good!
-Steve