# Buggy code
def _get_listlike_indexer(self, key, axis: int, raise_missing: bool = False):
    """
    Transform a list-like of keys into a new index and an indexer.

    Parameters
    ----------
    key : list-like
        Targeted labels.
    axis: int
        Dimension on which the indexing is being made.
    raise_missing: bool, default False
        Whether to raise a KeyError if some labels were not found.
        Will be removed in the future, and then this method will always behave as
        if ``raise_missing=True``.

    Raises
    ------
    KeyError
        If at least one key was requested but none was found, and
        raise_missing=True.

    Returns
    -------
    keyarr: Index
        New index (coinciding with 'key' if the axis is unique).
    values : array-like
        Indexer for the return object, -1 denotes keys not found.
    """
    ax = self.obj._get_axis(axis)

    # Have the index compute an indexer or return None
    # if it cannot handle:
    indexer, keyarr = ax._convert_listlike_indexer(key)
    # We only act on all found values:
    if indexer is not None and (indexer != -1).all():
        self._validate_read_indexer(key, indexer, axis, raise_missing=raise_missing)
        return ax[indexer], indexer

    if ax.is_unique and not getattr(ax, "is_overlapping", False):
        indexer = ax.get_indexer_for(key)
        keyarr = ax.reindex(keyarr)[0]
    else:
        keyarr, indexer, new_indexer = ax._reindex_non_unique(keyarr)

    self._validate_read_indexer(keyarr, indexer, axis, raise_missing=raise_missing)
    return keyarr, indexer


# Traceback (KeyError)
In [10]: series.loc[['2000-01-14', '2000-01-15']]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-10-e922e8a9ed74> in <module>()
----> 1 series.loc[['2000-01-14', '2000-01-15']]

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/core/indexing.py in __getitem__(self, key)
1187             return self._getitem_tuple(key)
1188         else:
-> 1189             return self._getitem_axis(key, axis=0)
1190
1191     def _getitem_axis(self, key, axis=0):

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/core/indexing.py in _getitem_axis(self, key, axis)
1321                     raise ValueError('Cannot index with multidimensional key')
1322
-> 1323                 return self._getitem_iterable(key, axis=axis)
1324
1325             # nested tuple slicing

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/core/indexing.py in _getitem_iterable(self, key, axis)
931     def _getitem_iterable(self, key, axis=0):
932         if self._should_validate_iterable(axis):
--> 933             self._has_valid_type(key, axis)
934
935         labels = self.obj._get_axis(axis)

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/core/indexing.py in _has_valid_type(self, key, axis)
1269
1270                 raise KeyError("None of [%s] are in the [%s]" %
-> 1271                                (key, self.obj._get_axis_name(axis)))
1272
1273             return True

KeyError: "None of [['2000-01-14', '2000-01-15']] are in the [index]"

# Fixed code
def _get_listlike_indexer(self, key, axis: int, raise_missing: bool = False):
    """
    Transform a list-like of keys into a new index and an indexer.

    Parameters
    ----------
    key : list-like
        Targeted labels.
    axis: int
        Dimension on which the indexing is being made.
    raise_missing: bool, default False
        Whether to raise a KeyError if some labels were not found.
        Will be removed in the future, and then this method will always behave as
        if ``raise_missing=True``.

    Raises
    ------
    KeyError
        If at least one key was requested but none was found, and
        raise_missing=True.

    Returns
    -------
    keyarr: Index
        New index (coinciding with 'key' if the axis is unique).
    values : array-like
        Indexer for the return object, -1 denotes keys not found.
    """
    ax = self.obj._get_axis(axis)

    # Have the index compute an indexer or return None
    # if it cannot handle:
    indexer, keyarr = ax._convert_listlike_indexer(key)
    # We only act on all found values:
    if indexer is not None and (indexer != -1).all():
        self._validate_read_indexer(keyarr, indexer, axis, raise_missing=raise_missing)
        return ax[indexer], indexer

    if ax.is_unique and not getattr(ax, "is_overlapping", False):
        indexer = ax.get_indexer_for(keyarr)
        keyarr = ax.reindex(keyarr)[0]
    else:
        keyarr, indexer, new_indexer = ax._reindex_non_unique(keyarr)

    self._validate_read_indexer(keyarr, indexer, axis, raise_missing=raise_missing)
    return keyarr, indexer