pre-allocate the deferred's shape

This allows the VM to optimize correctly.
remove whitespace
simplify handling the thenable.

Removed the double try/catch