Refactored Promise spike; needs mutex lock