The allocator’s output is only two: either you get memory or you don’t. To quote GP
> Every function with an IO interface cannot be reasoned about locally because of unexpected interactions with the io parameter input
This means with IO interface is not quiet clear what WILL happen so it “depends”