A transport is used to send and receive bytes and file descriptors. Typically this will just call the usual Unix sendmsg and recvmsg functions, but other transports are possible.
type('a, 'role) user_data = ..
Extra data that can be attached to a proxy of type 'a with 'role.