I considered moving the `IO` module type definition to use this poly variant instead of an `option` type, but it's probably best deferred for 2.0 since there are other users of the module type these days.