How about a pm module that provides for simple blocking event flags. It can contain platform-specific code for known cases, and sockets for all else. That's like File::Copy, which uses native primitives in those cases where it can, and does it itself if it must or doesn't know of a better way.