The "promise"-driven solution combined w/ your helper is fantastic!  I'm curious; the integration test w/ timeouts seems to be a complete test, whereas the integration test w/ promises is a subset.  Why are we keeping the integration test w/ timeouts?  Is the intent to use that test to complete the "promises" test?

In any case, am merging.  Thanks, and my apologies for my tardy response.