Taking a quick look at Skia, it looks like they handle this by using glFenceSync semaphores and glFlush
(https://skia.googlesource.com/skia/+/refs/heads/main/src/gpu/ganesh/gl/GrGLGpu.cpp#4461)
If the platform does not support glFenceSync (like GLES 2.0), then it looks like they need to fall back to glFinish
(https://skia.googlesource.com/skia/+/refs/heads/main/src/gpu/ganesh/gl/GrGLGpu.cpp#4307)