Cannot Instantiate with onBeginContact

Hello I found this issue, it looks like you cannot instantiate prefabs on the OnCollisionCallback
This is what happens.

I just use 2 scripts files. 1 Prefabs.
The idea is when the player hit the box collider 2d it will instantiate a new one but it looks like I cannot make that using the OnBeginContact

import { _decorator, Collider2D, Component, Contact2DType, Game, IPhysics2DContact, Node, Vec3 } from 'cc';
import { GameManager } from './GameManager';
const { ccclass, property } = _decorator;

@ccclass('Player')
export class Player extends Component
{

    @property({type:Node})
    public GameManagerNode: Node;
    private GameManager: GameManager;

    start()
    {
        let collider= this.getComponent(Collider2D);
        if(collider)
        {
            collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
        }
        if(this.GameManagerNode)
        {
            this.GameManager=this.GameManagerNode.getComponent(GameManager);
        }
    }

    onBeginContact (selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null)
    {
        // will be called once when two colliders begin to contact
        console.log('onBeginContact');
        if(otherCollider.tag == 5)//Hit the trigger
        {
            this.GameManager.MakeLevel();
        }
    }

    update(deltaTime: number)
    {
        this.node.translate(new Vec3(0,5,0));
    }
}
import { _decorator, Component, instantiate, Node, Prefab, Vec3 } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('GameManager')
export class GameManager extends Component
{
    @property({type:Prefab, tooltip:"Trap Obstacle"})
    public Level:Prefab;
    private SpawnPos:Vec3;

    start()
    {
        this.SpawnPos = this.node.worldPosition;
        this.MakeLevel();
    }

    public MakeLevel():void
    {
        if(this.Level)
        {
            let tmp = instantiate(this.Level);
            tmp.parent = this.node;
            this.SpawnPos.y += 300;
            tmp.parent.setWorldPosition(this.SpawnPos);
        }
    }    
}

But If I create a flag for the Game Manager and Instantiate on the update function it will work.
The thing is, it create the Prefab but the collider of the new object seems they’re not initialized.
And fails.

Add the project.

Bug_InstatiteOnCollisionEvent.zip (16.7 KB)