Explain core JavaScript concepts such as closures, prototypal inheritance, and asynchronous programming patterns.