Log the last error from serve

Propagate the error from recv up the call path instead of hiding it with an ErrProtocol