def METHOD_NAME(self):
    """
    Decode the next value from the stream.
    :raises CBORDecodeError: if there is any problem decoding the stream
    """
    try:
        initial_byte = self.fp.read(1)[0]
        major_type = initial_byte >> 5
        subtype = initial_byte & 31
    except Exception as e:
        raise CBORDecodeError(
            "error reading major type at index {}: {}".format(self.fp.tell(), e)
        )
    decoder = major_decoders[major_type]
    try:
        return decoder(self, subtype)
    except CBORDecodeError:
        raise
    except Exception as e:
        raise CBORDecodeError(
            "error decoding value {}".format(e)
        )  # tell doesn't work on micropython at the moment