manage send and recv errors separately, and bail on I/O operations when they're not cleared
improve peereid example's output
don't install a default error handler, just make it look like there's one; add more documenting comments; improve naming consistency