Clean up promises code some more.

I cleaned up some unnecessary code in the promises changes.  I'm happy to discuss any of these changes.  @jdfreder, can you look at this?

(I think probably the previous code is technically correct, but it's overly complicated)