user should handle retrying, so moved it to libraryexception