extend perform_put with a replying error case rather than working around, maybe?