PromiseCoroutine now throws PromiseRejectedException when a promise is rejected with a non-exception reason (fixes #47)