nicer error state handling
Don't do silly round trip around allocing an extra frame