Raise SystemExit instead of calling goaway().
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index ef93d20..c846068 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -96,12 +96,9 @@
 	object *self;
 	object *args;
 {
-	int sts;
-	if (!getintarg(args, &sts))
-		return NULL;
-	goaway(sts);
-	exit(sts); /* Just in case */
-	/* NOTREACHED */
+	/* Raise SystemExit so callers may catch it or clean up. */
+	err_setval(SystemExit, args);
+	return NULL;
 }
 
 static struct methodlist sys_methods[] = {