1. A method comprising: identifying a task to be enqueued for asynchronous execution as a separate thread during runtime of a program; upon enqueuing the task in an execution queue, capturing pre-queue stack trace information associated with the task, wherein stack trace information comprises debugging information that provides a backtrace to at least one portion of a program that caused the task to become enqueued; associating the pre-queue stack trace information with the task; removing the task from the execution queue for execution, wherein the execution is associated with current stack trace information separate from the pre-queue stack trace information; upon detecting an event associated with executing the task, merging the pre-queue stack trace information with the current stack trace information to yield a merged stack trace; and if the event is not detected upon completion of the execution of the task, removing the pre-queue stack trace information and the current stack trace information.