Copied from mitogen because of https://github.com/mitogen-hq/mitogen/issues/568