Summary:
This change removes ourselves as a delegate before closing.
SocketRocket uses its own internal async queue to perform most operations.
After a disconnect, we don't expect to receive any more delegate calls as the handlers may contain references which may have become invalid.
So, removing ourselves as delegates will ensure that we don't get called after a disconnect.
For sanity, we are also taking a copy of the message handler instead of a reference to it.
Reviewed By: briantkelley
Differential Revision: D31360721
fbshipit-source-id: bae5a2423757cd9064ffac28afb8b78c28a20d87