no need to promisify on expectation reject
improvements on reversibleChange