How to use AudioSource.Play() in multiple sequential calls without previous clips stopping prematurely? (overlapping audio)

I have a fire sound on a weapon so that when ever the weapon’s fire button is press it executes all the related events that are the result of firing a weapon including its sound effect. The sound usually doesn’t end before the fire button is pressed again which results in the sound effect being cut short which is what I don’t want. How do I keep a sound playing when Play() is called until it reaches the end of its duration even when Play() is called again?

AudioSource.PlayOneShot() will not stop audio from previous calls to PlayOneShot().