Thread A executes a system call.
An async signal occurs that has a signal handler.
The kernel returns to user mode and executes the Posix-level signal handler in thread B
The Posix signal handler enqueues a Scheme signal handler for later execution (in thread C?)
When the signal handler exits, thread A is resumed with errno = EINTR.
The Scheme runtime re-executes the system call on behalf of thread A.
Asynchronously, thread C runs the Scheme signal handler, at which point any non-local exit is irrelevant to thread A.