async def METHOD_NAME(source_url: str, target_url: str, fs: AsyncFS) -> Optional[dict]:
    source_task = asyncio.create_task(stat_and_size(fs, source_url))
    target_task = asyncio.create_task(stat_and_size(fs, target_url))
    await asyncio.wait([source_task, target_task])
    try:
        _, ssize = await source_task
    except FileNotFoundError as err:
        target_task.cancel()
        raise DiffException(f'Source file removed during diff: {source_url}') from err
    try:
        _, tsize = await target_task
    except FileNotFoundError:
        return {"from": source_url, "to": target_url, "from_size": ssize, "to_size": None}
    if ssize != tsize:
        return {"from": source_url, "to": target_url, "from_size": ssize, "to_size": tsize}
    return None