I will add a few comments about the 'event disable' and 'TCP::close' functions. I've not seen many developers use them at all, but they are really nice functions to give a final polish to your code.
The event disable command is optional if it's your only iRule, however, if you use more iRules that imply other HTTP redirects or respond messages, it's a must-have command to prevent TCL errors (multiple redirect/respond invocations violation).
In regards to TCP::close, it's optional, but recommended since the Web Browser of a client and F5 (clientside listener) can keep the TCP connection open for quite a while if there's no "Connection=Close" header specified. That means, any other iRule code that were processed before the "Error 503" iRule, will not work once the clients try to re-visit the URL that triggered the 503 response in the first place. That happens because according to F5 those blocks of code were already processed, and it can keep causing problems until client finally attempts to connect from a new Web Browser window, or until you forcefully kill the clientside TCP connection in F5!
To conclude, you can and should use both of them together when working with multiple redirect/respond iRules for HTTP services.