Add `then` function for VoidPromise
Update for API changes and add tail_call functionality