> It needs to have the side-effect so calls to isSupported are correct. I could add an initialize function that can attempt to set up and not rely on side effects afterits called.

The side-effect is fine.  This particular code can be written more elegantly if it does not rely on the side-effect and instead `updateFramebuffers` returns the same value as `isSupported`.  It's fine either way, but when something needs a comment, `// framebuffer creation failed`, it's an indication that the code could be cleaner.