Synchronous exceptions thrown from complex expressions create abandoned promises. Solutions?

I've got a better solution here: Proposal + seeking champion: Composable promise concurrency management