Make the events run async and in series. Also use promises to support the middleware pattern