Jmrunge/sync timeout

This seems to fix most of the intermitent travis testing issues. There is only ONE real set of bugs fixed here which is that the calls inside then`then()` in heartbeats' promises were immediate, passing `then` the function's result, not the functions as callbacks