improve handling in a couple more edge cases

No reason to roll back a partial operation on a bufq when the API
provides a mechanism for indicating a partial.

Treat EINTR and EINPROGRESS similarly to EAGAIN for fd operations.