a simple asynchronous function queue