Improved failure handling, now catching DSException and retrying on several levels