Higher-Order Contracts for JavaScript