async def METHOD_NAME(self):
    start_bytes = b"BM"
    while (await self.lower.read(1)) != b'B': pass
    while (await self.lower.read(1)) != b'M': pass
    length_bytes = await self.lower.read(2)
    length, = struct.unpack(">H", length_bytes)
    assert length > 2
    data_bytes  = await self.lower.read(length - 2)
    data = struct.unpack(">13H", data_bytes)
    check_bytes = await self.lower.read(2)
    check, = struct.unpack(">H", check_bytes)
    if sum(start_bytes + length_bytes + data_bytes) != check:
        raise PMSx003Error("PMSx003 checksum incorrect")
    sample = PMSx003Measurement(*data[3:12])
    self._log("measured PM1.0=%d [ug/m³] PM2.5=%d [ug/m³] PM10=%d [ug/m³] "
              "P0.3=%d [n/dL] P0.5=%d [n/dL] P1.0=%d [n/dL] "
              "P2.5=%d [n/dL] P5.0=%d [n/dL] P10=%d [n/dL]",
              *sample)
    return sample