This class extends the inherited context (see private members for what the inherited context is) to cover async execution. Is intended to be used as a base class, if the inherited context is compiled out it takes 0 space