drain(handler) {
        // Determine if this is the first time the drain handler is being set
        const is_first_time = this._drain_handler === null;

        // Store the handler which will be used to provide drain events to uWS
        this._drain_handler = handler;

        // Bind a writable handler with a fallback return value to true as uWS expects a Boolean
        if (is_first_time)
            this._raw_response.onWritable((offset) => {
                // Retrieve the write result from the handler
                const output = this._drain_handler(offset);

                // Throw an exception if the handler did not return a boolean value as that is an improper implementation
                if (typeof output !== 'boolean')
                    this.throw(
                        new Error(
                            'HyperExpress: Response.drain(handler) -> handler must return a boolean value stating if the write was successful or not.'
                        )
                    );

                // Return the boolean value to uWS as required by uWS documentation
                return output;
            });
    }
Binds a drain handler which gets called with a byte offset that can be used to try a failed chunk write.
You MUST perform a write call inside the handler for uWS chunking to work properly.
You MUST return a boolean value indicating if the write was successful or not.
Note! This method can only provie drain events to a single handler at any given time which means If you call this method again with a different handler, it will stop providing drain events to the previous handler.

@param {function(number):boolean} handler Synchronous callback only