Move away from non-standard promise implementation