We should not write after the context is cancelled. This causes tests to fail as they are trying to clean up. To try to accommodate this, we'll need to listen to the context in any loop where we don't immediately get other instructions from e.g. trying to do an HTTP request.