extract payload_and_headers
put timers inside the promise
prefer errors from timer first
use timers gem instead of homebrewed broken thread based timer