process specs and factored nested callbacks into promise chain
use be(true) instead of beTruthy for functions that should actually return true