using idisposable to signal request completed