In futures::sink::Sink why is order of calls not enforced at type system level?

Ah, yeah, we hit the GAT again there. This must be the reason. Or at least, it's the reason it can't be currently implemented as I described. Going through Mutex is obviously far worse than what we now...