Using just server.close only terminates the server once every connection is closed. This is problematic since, by design, keep-alive connections can continue to hold the server open, and WebSockets can hold the connection open for extended periods of time. A naive solution forcefully destroys all the sockets, interrupting any inflight requests. Another solution is to server.unref the server, but this isn't a satisfactory solution as it does not allow the close event to be used. This library solves this problem by tracking when a connection is busy, using request for HTTP connections, and hooking into write in the case of WebSockets. The server shutdowns by first stopping any additional connections being made, closing any idle HTTP and WebSocket connections, closing any busy HTTP connections once the inflight request has completed, and closing WebSocket connections on finish of a write.