def METHOD_NAME(counter_path, *args, **kwargs):
    try:
        sleep = float(kwargs['sleep'][0])
    except (KeyError, TypeError, IndexError):
        sleep = 0
    try:
        factor = int(kwargs['factor'][0])
    except (KeyError, TypeError, IndexError):
        factor = 0
    # Allow using PDH_FMT_LONG for certain counter types if it is required
    fmt = win32pdh.PDH_FMT_DOUBLE
    try:
        fmt = int(kwargs['format'][0])
        if fmt == 1:
            fmt = win32pdh.PDH_FMT_LONG
    except (KeyError, TypeError, IndexError):
        pass
    query = win32pdh.OpenQuery()
    try:
        counter = win32pdh.AddEnglishCounter(query, counter_path)
        try:
            if factor != 0:
                # Multiply results by 10^(factor) to get around limitations on threshold types
                win32pdh.SetCounterScaleFactor(counter, factor)
            win32pdh.CollectQueryData(query)
            if sleep != 0:
                time.sleep(sleep)
                win32pdh.CollectQueryData(query)
            _, _, _, _, _, _, _, info, _ = win32pdh.GetCounterInfo(counter, False)
            _, value = win32pdh.GetFormattedCounterValue(counter, fmt)
        finally:
            win32pdh.RemoveCounter(counter)
    finally:
        win32pdh.CloseQuery(query)
    unit = info[-1]
    if not isinstance(value, (int, long)):
        value = round(value, 2)
    return [value, unit]