use ecmascript bind if available, polyfill if it's not