discussing on the webapi mailing list, I think we forgot something here: to make "canvas" garbage collectable, we need to free all its references; assigning "canvas = null" is (probably) not enough because ensureSizeLimit is used as the `toBlob` handler, that means the reference can't likely be internally freed until `ensureSizeLimit` finishes. That means , in my opinion, that we should call the callback in a setTimeout, so that we escape the function asap.

Otherwise, the callback will be called, and we'll wait that the callback returns to end the `ensureSizeLimit` function.

This is only a guess, and it depends how toBlob's callback is internally called (maybe it's already called in a way that frees the canvas reference), but it's cheap for us and it can save more memory.