start .then
check if fulfilled and rejected are function then add cache. return promise