Addresses the issues raised by @ryansb. defering mutex.Unlock(), using time.After and renaming Batch* to Enqueue*