async def METHOD_NAME(self) -> "List[Tuple[T, asyncio.Future[R]]]":
    """Fetch the next bulk from the internal queue"""
    max_items, queue = self._size, self._queue
    # always pull in at least one item asynchronously
    # this avoids stalling for very low delays and efficiently waits for items
    results = [await queue.get()]
    queue.task_done()
    deadline = time.monotonic() + self._delay
    while len(results) < max_items and time.monotonic() < deadline:
        try:
            if queue.empty():
                item = await asyncio.wait_for(
                    queue.get(), deadline - time.monotonic()
                )
            else:
                item = queue.get_nowait()
        except asyncio.TimeoutError:
            break
        else:
            results.append(item)
            queue.task_done()
    return results