async def METHOD_NAME(
    mock_reader_flow_control: None,
    read_started_event: asyncio.Event,
    ok_to_finish_read_event: asyncio.Event,
    subject: Poller,
) -> None:
    """It should wait for a full poll before notifying."""
    # wait for the first read to start
    asyncio.create_task(subject.start())
    await asyncio.wait_for(read_started_event.wait(), timeout=4 * subject.interval)
    # subscribe in the middle of the first read
    poll_notification = asyncio.create_task(subject.wait_next_poll())
    # allow the first read to finish, then wait for the second read to start
    read_started_event.clear()
    ok_to_finish_read_event.set()
    await asyncio.wait_for(read_started_event.wait(), timeout=4 * subject.interval)
    # verify that our wait isn't done, because it was kicked off after the first read started
    assert poll_notification.done() is False
    # allow the second read to complete and wait for the third read to start
    read_started_event.clear()
    ok_to_finish_read_event.set()
    await asyncio.wait_for(read_started_event.wait(), timeout=4 * subject.interval)
    # verify the waiter has now been notified since it's been through the full second read
    assert poll_notification.done() is True