Use native promises, if available