def METHOD_NAME(self):
    """
    To be called to start the acquisition in the stream, and blocks until
    the task is finished
    returns (list of DataArray): acquisition data
    raises CancelledError if the acquisition was cancelled
    """
    estt = self._stream.estimateAcquisitionTime()
    # The standard is_active acquisition doesn't care about the leeches,
    # so when imitating .acquire(), we need to call the leeches too.
    # We acquire just a single time, which we state by a shape of (1).
    leech_np = []
    for l in self._stream.leeches:
        np = l.start(estt, (1,))
        leech_np.append(np)
    # call prepare explicitly just to make sure that the preparation is
    # already done once we start waiting for the acquisition
    f = self._stream.prepare()
    f.result()
    # start stream
    self._startt = time.time()
    self._stream.image.subscribe(self._image_listener)
    # TODO: if exception during activation, it will not be passed here
    # as the VA will just log it. => change _onActive to be a setter, or
    # check also the .status VA.
    self._stream.is_active.value = True
    # wait until one image acquired or cancelled
    if not self._acq_over.wait(10 * estt + 5):
        raise IOError("Acquisition of stream %s timed out after %f s" %
                      (self._stream.name.value, 10 * estt + 5))
    with self._condition:
        if self._state in (CANCELLED, CANCELLED_AND_NOTIFIED):
            raise CancelledError()
    # Call leeches for both first pixel acquired and end of acquisition
    for l, np in zip(self._stream.leeches, leech_np):
        if np is not None:
            l.next(self._stream.raw)
        l.complete(self._stream.raw)
    return self._stream.raw # the acquisition data