I don't think the :fail return value is being handled at any place, is it? Maybe I'm forgetting something, but if it isn't handled, just return

On the other hand, probably you would like to disconnect before returning in case of error