> Why only when !readable? Turning on O_NONBLOCK only for stdin still affects other processes that share that file descriptor (which is probably mapped to stdout and stderr as well.)

It used to be that way before, so I fallback to that. If we can safely do it for readable streams as well I can change that. Maybe it was done like that for consistency with Windows?