For xcoms pushed from different tasks, having the same execution_date and in the same Dag, the result of the xcom_pull with key set as None is not deterministic in its order

**Apache Airflow version**: 2.0


**Kubernetes version (if you are using kubernetes)** (use `kubectl version`):

**Environment**:

- **Cloud provider or hardware configuration**:
- **OS** (e.g. from /etc/os-release):
- **Kernel** (e.g. `uname -a`):
- **Install tools**:
- **Others**:

**What happened**:
When tasks in the same dag push Xcoms, the result of the xcom_pull comes in any order. The order is not deterministic.

**What you expected to happen**:

I expected the order to be deterministic.

**How to reproduce it**:

Run the provided example_xcom dag in the repository multiple times


airflow/models/taskinstance.py
from airflow.utils.timeout import timeout
try:
    from kubernetes.client.api_client import ApiClient
    from airflow.kubernetes.kube_config import KubeConfig
    from airflow.kubernetes.kubernetes_helper_functions import create_pod_id
    from airflow.kubernetes.pod_generator import PodGenerator
except ImportError:
    ApiClient = None
TR = TaskReschedule
Context = Dict[str, Any]
_CURRENT_CONTEXT: List[Context] = []
log = logging.getLogger(__name__)
@contextlib.contextmanager
def set_current_context(context: Context):
    """
    Sets the current execution context to the provided context object.
    This method should be called once per Task execution, before calling operator.execute.
    """
    _CURRENT_CONTEXT.append(context)
    try:
        yield context
    finally:
        expected_state = _CURRENT_CONTEXT.pop()
        if expected_state != context:
            log.warning(
                "Current context is not equal to the state at context stack. Expected=%s, got=%s",
                context,
                expected_state,
            )
def clear_task_instances(