Webgl canvas as a CanvasTexture

I have a webgl <canvas> element and would like to use it as a texture in three.js.

I was unable to get it working with
const texture = new THREE.CanvasTexture(canvas);

However, this
const texture = new THREE.TextureLoader().load(canvas.toDataURL())
works fine.

Am I missing something or does CanvasTexture not work with webgl canvases?