Use Spawn() instead of Unity's Instantiate(). The function signature is the same but the return type is different and Spawn() will use an instance from the pool if one is available.
GameObject or prefab to spawn
Use this to define the transform of the spawned GameObject when created
Spawned Game Object
Store the returned the spawned GameObject.
Event triggered if spawn was successful
Event triggered if spawn was not successful. It fails if the 'limit' option was used and the limit was reached.