This commit introduces a new error type LinkFailureError which is used to distinguish the different kinds of errors that we can encounter during link operation. It encapsulates the information necessary to decide how we should handle the error.