'Inserts a new instance of ``CredentialProvider`` into the chain that
will be tried before an existing one.
:param name: The short name of the credentials you\'d like to insert the
new credentials before. (ex. ``env`` or ``config``). Existing names
& ordering can be discovered via ``self.available_methods``.
:type name: string
:param cred_instance: An instance of the new ``Credentials`` object
you\'d like to add to the chain.
:type cred_instance: A subclass of ``Credentials``'

def insert_before(self, name, credential_provider):

    try:
        offset = [p.METHOD for p in self.providers].index(name)
    except ValueError:
        raise UnknownCredentialError(name=name)
    self.providers.insert(offset, credential_provider)
